突变体不适用于质量插入物

时间:2016-07-14 17:18:54

标签: laravel laravel-5.2

如果我有一个值数组,我想在上面进行大量插入:

Item::insert([['price' => 1234.25], ['price' => 4321.75]]);

然后我的变异者不会开枪:

public function setPriceAttribute($value)
{
    $this->attributes['price'] = round($value, 2) * 100;
}

除非我将每个分成一个创建:

foreach ([['price' => 1234.25], ['price' => 4321.75]] as $new)
    Item::create($new);

我在这里遗漏了什么吗?或者我是否必须手动将round($value, 2) * 100应用于数组中的每个价格值?

我有很多要插入的记录,因此大量插入在数据库上最有效。

1 个答案:

答案 0 :(得分:1)

insert是db,create是雄辩的。使用Item::create($new);,但它需要位于foreach

insert不是雄辩的,但可以大规模插入 - 但时间戳更新和作品不会被添加等等。

所以foreach,可能是你最好的选择:

foreach ($news as $new)
{
    Item::create($new);
}

无论如何,您似乎都需要foreach。要么变异,要么创建记录。选择你的毒药。