3 回答

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

TA貢獻1906條經驗 獲得超3個贊
因為你的$request->order_detail不會包含 order_id。您可以從新創建的 $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貢獻1801條經驗 獲得超16個贊
聽起來像是數據庫問題。該列order_id
具有 AUTO_INCRMENT,這意味著它將在插入時生成一個數字。
嘗試使用 phpMyAdmin 插入以查看 AUTO_INCRMENT 是否有效?;蛘呤褂?SHOW TABLE STATUS 并檢查 AUTO_INCRMENT。
- 3 回答
- 0 關注
- 182 瀏覽
添加回答
舉報