Как вставить объемные данные за раз в Laravel?

Привет всем, я пытаюсь вставить несколько строк в базе данных одновременно. В настоящее время я могу сохранить только одну строку за раз.
Я сделал следующее:

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

1

Решение

Попробуйте преобразовать все объекты в массивы, а затем создать массив из нескольких массивов:

$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'
];
0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]