@dargezrogue

Как объединить таблицы?

Существует таблица orders с полями user_id, lot_id
Необходимо получить ордера, информацию пользователе и лоте путем объединения таблиц.
Как это можно реализовать это при помощи laravel?
5ce1e3eca3f55659767490.jpeg
  • Вопрос задан
  • 286 просмотров
Решения вопроса 1
@jazzus
С помощью with
Нужно сделать отношения в модели Order на каждую таблицу с которой есть связь.
Затем собрать их все в контроллере в заказы
// в зависимости от логики связи
$orders = Order::with('user.cart.lots')
               ->get();

Все данные будут собраны в одну коллекцию
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 2
Wolfnsex
@Wolfnsex
Если не хочешь быть первым - не вставай в очередь!
Вариантов тут на мой взгляд несколько:
1. Воспользовать связями на уровне Laravel
2. Создать в БД view'шку с нужными данными и делать выборку из неё
3. С помощью DB::select, создать запрос, в котором Вы объедините таблицы с помощью запроса как Вам нужно
Ответ написан
Комментировать
@ettychel
Можно сделать с помощью Eloquent
В модели orders прописать 2 belongsTo
Потом написать запрос
Orders::find($id)->with(['users:id,login,email', 'lots:id,title']) //users и lots названия методов в модели

И вот я смотрю и не понимаю, почему у тебя orders.lot_id связан с cart.id? Может связь надо сделать orders.lot_id к lots.id?
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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