【发布时间】:2020-09-16 07:08:50
【问题描述】:
我有一个 Order、Product 和 OrderProduct 模型。 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 具有相同的 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变量,这里可能打不通关系?
【问题讨论】:
标签: php laravel eloquent laravel-7 eloquent-relationship