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