我有一個(gè)訂單、產(chǎn)品和訂單產(chǎn)品模型。Order 與 Products 有 belongsToMany 關(guān)系,如public function products(){ return $this->belongsToMany('App\Product')->withPivot('group');}因此,用戶在數(shù)據(jù)庫中創(chuàng)建了一個(gè)訂單:$order = Order::create([ 'order_id' => $payment->metadata->order_id, 'user_email' => $request ->email,]);我們還保存產(chǎn)品(請(qǐng)注意它們與訂單具有相同的 order_id):foreach (Cart::content() as $item){ OrderProduct::create([ 'order_id' => $payment->metadata->order_id, 'product_id' =>$item->model->id, 'group' => $item->options->group, ]); }那么我想發(fā)送一封電子郵件,其中包含從數(shù)據(jù)庫中檢索到的訂單信息和產(chǎn)品信息,這在我的 webhook 文件中,當(dāng)付款支付時(shí),會(huì)發(fā)送一封電子郵件: //Let's send an email. $order = Order::where('order_id', '=', $payment->metadata->order_id)->firstOrFail(); Mail::send (new OrderPlaced ($order));電子郵件通過輸出 {{$order->order_id}} 和 {{$order->user_email}} 在我的視圖中顯示了所有訂單信息,如 order_id 和 user_email 但是當(dāng)我嘗試循環(huán)時(shí)我看不到產(chǎn)品他們與:@foreach ($order->products as $product) {{$product->name}} @endforeach它什么也沒有返回,沒有錯(cuò)誤,什么也沒有。dd ($product) 什么都不返回。我在這里忽略了什么?我的想法:1. 我沒有使用 id 作為主鍵,所以我可能需要在 belongsToMany 關(guān)系中指定第二個(gè)和第三個(gè)參數(shù)?2. Mail 之前定義的$order 變量,也許我無法通過這里獲取關(guān)系?
2 回答

MYYA
TA貢獻(xiàn)1868條經(jīng)驗(yàn) 獲得超4個(gè)贊
為了獲得產(chǎn)品關(guān)系數(shù)據(jù),您必須先加載它:
?$order?=?Order::with('products')->where('order_id',?'=',$payment->metadata->order_id)->firstOrFail();

繁花不似錦
TA貢獻(xiàn)1851條經(jīng)驗(yàn) 獲得超4個(gè)贊
所以我想通了,也許其他人有時(shí)會(huì)面臨同樣的問題:我的外鍵在遷移中設(shè)置不正確。所以修復(fù)外鍵然后做一個(gè) php artisan migrate refresh 解決了它。
- 2 回答
- 0 關(guān)注
- 145 瀏覽
添加回答
舉報(bào)
0/150
提交
取消