Laravel по-русски

Русское сообщество разработки на PHP-фреймворке Laravel.

Ты не вошёл. Вход тут.

#1 19.04.2012 19:54:07

Связанные таблицы

У меня есть 4 таблицы
таблица1 -> связь с таблицей2 (один-ко-многим)
таблица2 -> связь с таблицей3 (один-ко-многим)
таблица2 -> связь с таблицей4 (один-ко-многим)

Я бы хотел вывести общий результат из всех таблиц в одном запросе, чтобы построить общую таблицу с помощью forech.
Или же в таких случаях лучше разбивать на отдельные запросы, но как тогда вывести их в одной таблице?

Не в сети

#2 19.04.2012 20:43:46

Re: Связанные таблицы

Привет, 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? По идее такой запрос он тоже должен осилить.

Не в сети

#3 20.04.2012 08:23:55

Re: Связанные таблицы

Привет smile
А как будет выглядеть запрос Eloquent? У меня ведь нет связей таблицы1 с таблицей3 и таблицы1 с таблицей4.

Не в сети

#4 20.04.2012 09:30:24

Re: Связанные таблицы

Насколько я понимаю, в 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();

Не в сети

#5 20.04.2012 15:24:19

Re: Связанные таблицы

спасибо, буду пробовать

Не в сети

Подвал раздела