You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Laravel跨表插入报列不存在错误 自动忽略多余字段方案

解答

将insert()方法替换为create()方法即可解决该问题。使用create方法时,模型只会插入$fillable属性中定义的字段值,会自动过滤所有非目标表的多余字段,不需要手动逐个剔除临时表独有字段。

原始问题

需求为审批通过后将临时表的数据迁移至主表。
主表中不存在status、cancelled、cancelled_by字段,这些字段仅存在于临时表中,尝试将临时表全量字段插入主表时,系统抛出错误。

最初实现数据迁移的代码如下:

public function approve(mpd_temp $mpd)
{
    $result = mpd::insert($mpd->toArray());

    if ($result) {
        mpd_temp::where('sno', $mpd->sno)->delete();
        toast('MPD Successfully Approved', 'success');
    }
}

曾尝试手动移除多余字段,代码如下:

$mpd->forget('status');
$mpd->forget('cancelled_at');
$mpd->forget('cancelledby');

但操作后依然报错,寻求可实现「临时表指定字段迁移至主表、插入成功后删除临时表对应数据」需求的最佳实践。


内容的提问来源于stack exchange,提问作者Lokesh M

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.28 09:48:52