Русское сообщество разработки на PHP-фреймворке Laravel.
Ты не вошёл. Вход тут.
Страницы 1
У меня есть 4 таблицы
таблица1 -> связь с таблицей2 (один-ко-многим)
таблица2 -> связь с таблицей3 (один-ко-многим)
таблица2 -> связь с таблицей4 (один-ко-многим)
Я бы хотел вывести общий результат из всех таблиц в одном запросе, чтобы построить общую таблицу с помощью forech.
Или же в таких случаях лучше разбивать на отдельные запросы, но как тогда вывести их в одной таблице?
Не в сети
Привет, kaan!
Лучше делать одним запросом, если это возможно.
В обычном SQL это выглядит так:
SELECT * FROM table_1 AS t1
JOIN table_2 AS t2 ON t1.table_2_id = t2.id
JOIN table_3 AS t3 ON t2.table_3_id = t3.id
JOIN table_4 AS t4 ON t2.table_4_id = t4.id
WHERE t1. <...>
Или ты используешь Eloquent? По идее такой запрос он тоже должен осилить.
Не в сети
Привет
А как будет выглядеть запрос Eloquent? У меня ведь нет связей таблицы1 с таблицей3 и таблицы1 с таблицей4.
Не в сети
Насколько я понимаю, в Eloquent связи вообще не работают на JOIN-ы, а только на WHERE. Я бы сделал так:
class T1 extends Eloquent { }
T1::join('t2', 't2.id', '=', 't1.t2_id')
->join('t3', 't3.id', '=', 't2.t3_id')
->join('t4', 't4.id', '=', 't2.t4_id')
->where('t1.id', '=', 10)
->get();
Не в сети
спасибо, буду пробовать
Не в сети
Страницы 1