Laravel - 多次插入模型

Laravel - Insert a model multiple times

我有一个模型,我更改了一些我想插入它的属性,但是 Eloquent,在我使用 save() 方法时,在第一次 save() 之后会自动进行更新,这是我的代码:

for ($i = 0; $i < $range; $i++) {
  $model->attr = "Some new value";
  $model->save(); // after the first save() will do update but I want to an insert
}

每次循环都需要创建一个新的Model实例。试试这个:

for ($i = 0; $i < $range; $i++) {
  $model = new Product;
  $model->attr = "Some new value";
  $model->save(); // after the first save() will do update but I want to an insert
}

我不确定你的型号名称是什么,但我在这个例子中使用了产品。将其替换为您的型号名称。

您可以使用create

$attributes = [
    'foo' => 'bar'
];
for ($i = 0; $i < $range; $i++) {
    $attributes['foo'] = 'bar'.$i;
    Model::create($attributes);
}

或者,如果您想在模型中创建一个函数:

public function saveAsNew(){
    $this->exists = false;
    $this->attributes[$this->primaryKey] = null; // reset the id
    return $this->save();
}

我还写了这个函数,多次保存同一个模型(是的,我知道这不是你想要的,但我还是想 post 它:

public function saveMultiple($times){
    $saved = true;
    for($i = 0; $i < $times; $i++){
        if(!$this->save()){
            $saved = false;
        }
        $this->attributes[$this->primaryKey] = null; // unset the id
        $this->exists = false;
    }

    return $saved;
}