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

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

Laravel 使用 attach 在數據透視表中包含一個附加字段

Laravel 使用 attach 在數據透視表中包含一個附加字段

PHP
一只名叫tom的貓 2021-06-09 18:30:42
首先,我有一個 $cart 返回一個集合。例子:Collection {#391 ▼  #items: array:2 [▼    "027c91341fd5cf4d2579b49c4b6a90da" => CartItem {#393 ▼      +rowId: "027c91341fd5cf4d2579b49c4b6a90da"      +id: "1"      +qty: 3      +name: "item 1"      +price: 9.99      +options: CartItemOptions {#392 ?}      -associatedModel: null      -taxRate: 21    }    "370d08585360f5c568b18d1f2e4ca1df" => CartItem {#394 ?}  ]}我正在使用 id 來匹配項目$cart = \Cart::content()->pluck('id', 'qty');$items = Item::whereIn('id', $cart)->get();然后將項目附加到訂單$order->items()->attach($items, [       'qty' => ???]);附加時我如何還包括數量?項目按預期附加,但也需要數量。
查看完整描述

1 回答

?
BIG陽

TA貢獻1859條經驗 獲得超6個贊

您可以通過將字典傳遞給該attach方法來實現此目的:


$order->items()->attach(

? ? Cart::contents()->mapWithKeys(function ($item) {

? ? ? ? ? return [

? ? ? ? ? ? ? $item->id => ['qty' => $item->qty]

? ? ? ? ? ];

? ? })->all()

);

原來的答案說你不能用這個attach方法來做到這一點。這顯然是錯誤的。


我將原始答案留在這里,因為代碼在技術上仍然是正確的。


Eloquent 的attach方法不允許為每個附加記錄添加不同的額外屬性。


您必須直接附加每條記錄,或者insert自己手動附加數據透視表中的記錄。


下面是一些幫助您入門的代碼:


$order->items()->newPivotStatement()->insert(

? ? Cart::content()->map(function ($item) use ($order) {

? ? ? ? return [

? ? ? ? ? ? 'order_id' => $order->id,

? ? ? ? ? ? 'item_id' => $item->id,

? ? ? ? ? ? 'qty' => $item->qty,

? ? ? ? ];

? ? })->all()

);

使其適應您的需求。


查看完整回答
反對 回復 2021-06-19
  • 1 回答
  • 0 關注
  • 299 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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