У меня есть модели Order, Product и OrderProduct. Заказ имеет отношение ownToMany с Продуктами, как в
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 as Order):
foreach (Cart::content() as $item){
OrderProduct::create([
'order_id' => $payment->metadata->order_id,
'product_id' =>$item->model->id,
'group' => $item->options->group,
]);
}
Итак, я хочу отправить электронное письмо с информацией о заказе и информацией о продуктах, полученной из базы данных, это находится в моем файле веб-перехватчика, и когда платеж будет оплачен, электронное письмо отправлено:
//Let's send an email.
$order = Order::where('order_id', '=', $payment->metadata->order_id)->firstOrFail();
Mail::send (new OrderPlaced ($order));
В электронном письме отображается вся информация о заказе, такая как order_id и user_email, в моем представлении через выходные данные {{$ order-> order_id}} и {{$ order-> user_email}} но я не вижу продуктов, когда пытаюсь выполнить l oop через них с помощью:
@foreach ($order->products as $product) {{$product->name}} @endforeach
Он просто ничего не возвращает, нет ошибок, ничего. Dd ($ product) ничего не возвращает. Что я здесь упускаю?
Мои мысли:
1. Я не использую id в качестве первичного ключа, поэтому, возможно, мне нужно указать второй и третий аргументы в отношении ownToMany?
2. Переменная $ order, определенная ранее на почту, может я не могу наладить здесь отношения?