Порядок запросов Laravel с order_details с использованием идентификатора

Застрял на этом.
Я использую этот же запрос без идентификатора, чтобы получить все успешно получить все эти данные.

$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);
}

Почему он ведет себя по-другому, когда передается идентификатор?

0

Решение

Когда вы используете find запрос выполняется перед другими директивами. Вы должны использовать where:

$ordered = $this->order
->where('order_id', $id)
->with('orderDetails', 'orderDetails.product')
->get();
1

Другие решения

Попробуйте использовать именно так:

$ordered = $this->order->find($id);

return response()->json($ordered);

Laravel уже обратился к отношениям, основанным на отсутствии отображения, которое вы вводите в модель.
В этом случае ваш orderDetails в вашем ответе будет выглядеть так:

Порядок: {
Id: «1»,
Xpto: «что угодно»,
Информация для заказа: {
Id: «1»}
}

1

По вопросам рекламы [email protected]