Застрял на этом.
Я использую этот же запрос без идентификатора, чтобы получить все успешно получить все эти данные.
$orders = $this->order
->with('orderDetails', 'orderDetails.product')
->today()
->get();
Отношения
Порядок:
public function orderDetails(){
return $this->hasMany('App\OrderDetail', 'order_id');
}
OrderDetail:
public function order()
{
return $this->belongsTo('App\Order', 'order_id', 'id');
}
public function product()
{
return $this->belongsTo('App\Product', 'id_products', 'id');
}
Но попытка использовать одно и то же для получения данных для определенного заказа не возвращает order_details.
public function invoice(Request $request, $id)
{
$ordered = $this->order
->find($id)
->with('orderDetails', 'orderDetails.product');
return response()->json($ordered);
}
Почему он ведет себя по-другому, когда передается идентификатор?
Когда вы используете find
запрос выполняется перед другими директивами. Вы должны использовать where
:
$ordered = $this->order
->where('order_id', $id)
->with('orderDetails', 'orderDetails.product')
->get();
Попробуйте использовать именно так:
$ordered = $this->order->find($id);
return response()->json($ordered);
Laravel уже обратился к отношениям, основанным на отсутствии отображения, которое вы вводите в модель.
В этом случае ваш orderDetails в вашем ответе будет выглядеть так:
Порядок: {
Id: «1»,
Xpto: «что угодно»,
Информация для заказа: {
Id: «1»}
}