亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

Laravel 子表中插入數據時出現外鍵問題

Laravel 子表中插入數據時出現外鍵問題

PHP
Helenr 2023-07-08 20:40:51
我正在嘗試在訂單表中插入數據,然后將訂單詳細信息保存在order_details表中。以下是我正在嘗試的代碼$order = Order::create($request->all());$order->order_detail()->insert($request->order_detail); //$request->order_detail is an array在我的模型中我提供了關系訂購型號public function order_detail(){   return $this->hasMany(OrderDetail::class, 'order_id');}訂單詳情 型號public function order(){   return $this->belongsTo(Order::class,'order_id');}但它返回給我 一般錯誤:1364 字段“order_id”沒有默認值,因為 order_id 是order_details表中的外鍵如何在不手動提供 order_id 的情況下做到這一點
查看完整描述

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.',

    ],

]);


查看完整回答
反對 回復 2023-07-08
?
一只名叫tom的貓

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


查看完整回答
反對 回復 2023-07-08
?
侃侃爾雅

TA貢獻1801條經驗 獲得超16個贊

聽起來像是數據庫問題。該列order_id具有 AUTO_INCRMENT,這意味著它將在插入時生成一個數字。

嘗試使用 phpMyAdmin 插入以查看 AUTO_INCRMENT 是否有效?;蛘呤褂?SHOW TABLE STATUS 并檢查 AUTO_INCRMENT。


查看完整回答
反對 回復 2023-07-08
  • 3 回答
  • 0 關注
  • 182 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號