我有一个Order,Product和OrderProduct模型。订单与产品中有一个对产品的属多关系
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 artisan迁移刷新解决了此问题。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句