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

Laravel中create()插入数据为null,insert()正常的原因排查

问题原因与解决办法

核心原因

create()是Eloquent的单条记录创建方法,它只接收一维数组(单条数据的键值对)。但你传入的$values是二维数组(多条记录的集合),此时create()会把数组的索引(如0、1等)当作字段名去匹配,而你的模型$fillable里没有这些字段,最终只会插入默认null值(仅自动维护的timestamps字段有值)。

而insert()方法原生支持二维数组批量插入,所以能正常工作。

解决方案

方案1:循环调用create()

遍历$values,逐个创建单条记录:

foreach($values as $value) {
    Order::create($value);
}

方案2:使用insert()批量插入(推荐,性能更优)

直接用insert()处理二维数组:

Order::insert($values);

额外提示

如果需要触发Eloquent的事件钩子(比如creating、created),可以用saveMany():

$orderInstances = [];
foreach($values as $value) {
    $orderInstances[] = new Order($value);
}
Order::saveMany($orderInstances);

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.03 07:55:18