Laravel - 多次插入模型

时间:2015-01-13 11:00:24

标签: php laravel model eloquent

我有一个模型,我改变了一些我要插入它的属性但是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
}

2 个答案:

答案 0 :(得分:6)

您可以使用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();
}

我也写了这个函数,多次保存相同的模型(是的,我知道这不是你的事,但我还是想发布它:

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;
}

答案 1 :(得分:5)

每次循环时都需要创建模型的新实例。试试这个:

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
}

我不确定您的型号名称是什么,但我在此实例中使用了Product。将其替换为您的型号名称。