我有一个订单、产品和订单产品模型。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 变量,也许我无法通过这里获取关系?
MYYA
繁花不似锦