@Andre548

Как можно оптимизировать запрос?

Можно ли как то оптимизировать этот запрос?
$order = Order::query()
            ->where('id', $order->id)
            ->with('user', 'gift',  'restaurant', 'orderItems', 'orderItems.ingredients', 'orderItems.options', 'orderItems.product')
            ->get();

грубо говоря, от user мне нужно получить только имя, от restaurant только адрес и тд
  • Вопрос задан
  • 73 просмотра
Пригласить эксперта
Ответы на вопрос 3
vfreelancer
@vfreelancer
php
кстати, 'orderItems' можно не писать, так как есть 'orderItems.ingredients',
Ответ написан
Комментировать
@jazzus
Смысла указывать where('id', $order->id) для уникального id нет. У тебя там будет одна запись, которая итак есть в переменной $order. Если нужно подгрузить отношения к $order нужно юзать load:
$order->load([
    'user' => function ($builder) {
        $builder->select('id', 'name');
    },
    'orderItems' => [
        'ingredients', 'options', 'product'
    ]
]);

Хотя лучше просто сохранить отношения в переменные (исключая отношения orderItems)
Ответ написан
Комментировать
AgentSmith72
@AgentSmith72
JS - это моё хобби
->with(['user:name', 'restaurant:address'])

Ещё нужно id и внешний ключ для подгружаемых таблиц обязательно, иначе они не загрузятся.
Да и не должно быть пробелов, между перечисляемыми столбцами.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы