为了账号安全,请及时绑定邮箱和手机立即绑定

雄辩的关系在邮件中不起作用

雄辩的关系在邮件中不起作用

PHP
慕丝7291255 2023-04-21 16:44:09
我有一个订单、产品和订单产品模型。Order 与 Products 有 belongsToMany 关系,如public function products(){        return $this->belongsToMany('App\Product')->withPivot('group');}因此,用户在数据库中创建了一个订单:$order = Order::create([                    'order_id' => $payment->metadata->order_id,                    'user_email' => $request ->email,]);我们还保存产品(请注意它们与订单具有相同的 order_id):foreach (Cart::content() as $item){                    OrderProduct::create([                        'order_id' => $payment->metadata->order_id,                        'product_id' =>$item->model->id,                        'group' => $item->options->group,                    ]);                }那么我想发送一封电子邮件,其中包含从数据库中检索到的订单信息和产品信息,这在我的 webhook 文件中,当付款支付时,会发送一封电子邮件:      //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 但是当我尝试循环时我看不到产品他们与:@foreach ($order->products as $product) {{$product->name}} @endforeach它什么也没有返回,没有错误,什么也没有。dd ($product) 什么都不返回。我在这里忽略了什么?我的想法:1. 我没有使用 id 作为主键,所以我可能需要在 belongsToMany 关系中指定第二个和第三个参数?2. Mail 之前定义的$order 变量,也许我无法通过这里获取关系?
查看完整描述

2 回答

?
MYYA

TA贡献1868条经验 获得超4个赞

为了获得产品关系数据,您必须先加载它:

 $order = Order::with('products')->where('order_id', '=',$payment->metadata->order_id)->firstOrFail();
查看完整回答
反对 回复 2023-04-21
?
繁花不似锦

TA贡献1851条经验 获得超4个赞

所以我想通了,也许其他人有时会面临同样的问题:我的外键在迁移中设置不正确。所以修复外键然后做一个 php artisan migrate refresh 解决了它。



查看完整回答
反对 回复 2023-04-21
  • 2 回答
  • 0 关注
  • 107 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信