3 回答

TA貢獻(xiàn)1829條經(jīng)驗(yàn) 獲得超7個(gè)贊
我假設(shè)這$request->order_detail是一個(gè)由許多 組成的數(shù)組order_details。
問題insert是您沒有使用 Eloquent,而是使用查詢生成器,因此 Laravel 無法自行填充order_id,如果您使用createMany它,它將能夠這樣做:
$order = Order::create($request->all());
$order->order_detail()->createMany($request->order_detail);
來自文檔:
您可以使用 createMany 方法創(chuàng)建多個(gè)相關(guān)模型:
$post = App\Post::find(1);
$post->comments()->createMany([
[
'message' => 'A new comment.',
],
[
'message' => 'Another new comment.',
],
]);

TA貢獻(xiàn)1906條經(jīng)驗(yàn) 獲得超3個(gè)贊
因?yàn)槟愕?request->order_detail不會(huì)包含 order_id。您可以從新創(chuàng)建的 $order 中獲取它。
$order = Order::create($request->all()); // upon create, you can access the order_id by doing $order->id
$orderDetails = [];
foreach($request->order_detail as $details) {
$orderDetails[] = [
array_merge($details, ['order_id' => $order->id]);
];
}
$order->order_detail()->insert($orderDetails);

TA貢獻(xiàn)1801條經(jīng)驗(yàn) 獲得超16個(gè)贊
聽起來像是數(shù)據(jù)庫(kù)問題。該列order_id
具有 AUTO_INCRMENT,這意味著它將在插入時(shí)生成一個(gè)數(shù)字。
嘗試使用 phpMyAdmin 插入以查看 AUTO_INCRMENT 是否有效?;蛘呤褂?SHOW TABLE STATUS 并檢查 AUTO_INCRMENT。
- 3 回答
- 0 關(guān)注
- 196 瀏覽
添加回答
舉報(bào)