我有一个模型,我改变了一些我要插入它的属性但是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
}
答案 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。将其替换为您的型号名称。