Привет всем, я пытаюсь вставить несколько строк в базе данных одновременно. В настоящее время я могу сохранить только одну строку за раз.
Я сделал следующее:
public function addNewPriceRevision($data){
$PriceRevision=new ProductPriceRevision(
[
'product_id'=>$data->product_id,
'invent_price'=>$data->invent_price,
'revised_price'=>$data->revised_price,
'effective_date'=>$data->effective_date,
'deleted'=>$data->deleted,
'remark'=>$data->remark,
'user'=>$data->user,
'date'=>$data->updated_at,
]
);
$PriceRevision->save();
return Common::getJsonResponse(true, 'new price revision created successfully!', 200);
}
Попробуйте преобразовать все объекты в массивы, а затем создать массив из нескольких массивов:
$data = array($data1->toArray(), $data2->toArray());
Если вам нужно добавить метки времени, вы должны сделать это вручную:
$date = date('Y-m-d H:i:s');
$data1 = $data1->toArray();
$data1['created_at'] = $date;
$data1['updated_at'] = $date;
$data2 = $data2->toArray();
$data2['created_at'] = $date;
$data2['updated_at'] = $date;
$data = array($data1, $data2);
Тогда вы могли бы использовать массовое назначение Возможность создания строк:
ProductPriceRevision::create($data);
И не забудьте заполнить $fillable
массив внутри ProductPriceRevision
модель:
protected $fillable = [
'product_id',
'invent_price',
'revised_price',
'effective_date',
'deleted',
'remark',
'user',
'updated_at'
];
Других решений пока нет …