Laravel по-русски

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

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

#1 16.02.2018 13:18:39

Запрос с leftjoin, НЕ выводит все записи, что не так ?

Task::where("tasks.gdz_id", $gdz_id)
      ->where("tasks.sekktion_id",$sekktion_id)
      ->where("tasks.image_tip",1)
      ->leftJoin('tasks as t2', 'tasks.groop', '=', 't2.groop')
      ->where("t2.image_tip",2)
      ->get();

Получается результат:
1) Задание1 - Ответ1
2) Задание3 - Ответ3
3) Задание4 - Ответ4
4) Задание5 - Ответ5

НУЖЕН результат такой:
1) Задание1 - Ответ1
2) Задание2 -
3) Задание3 - Ответ3
4) Задание4 - Ответ4
5) Задание5 - Ответ5

Так тоже не помогло:

Task::where("tasks.gdz_id", $gdz_id)
      ->where("tasks.sekktion_id",$sekktion_id)
      ->where("tasks.image_tip",1)
      ->leftJoin('tasks as t2',function($join) {
          $join->on('tasks.groop', '=', 't2.groop')
          ->where("t2.image_tip",2);
      })
      ->get();

Тот же результат...
ЧТО НЕ ТАК ?????

Не в сети

#2 16.02.2018 16:11:40

Re: Запрос с leftjoin, НЕ выводит все записи, что не так ?

Так ты фильтруешь

      ->where("t2.image_tip",2)

где t2 - это таблица, по которой ты джоинишь

Первое что приходит в голову - это делать подзапрос, но думаю можно сделать как-то изящнее.

Изменено covobo (16.02.2018 16:12:32)

Не в сети

#3 16.02.2018 16:51:43

Re: Запрос с leftjoin, НЕ выводит все записи, что не так ?

Дело в том что джоиню туже самую таблицу - tasks

В первой выборке делаю фильтр
    ->where("tasks.image_tip",1)
И потом джоиню
     ->leftJoin('tasks as t2', 'tasks.groop', '=', 't2.groop')
Но уже нужно присоеденить другие данные... и потому фильтр ->where("t2.image_tip",2)...

Но я уже нашёл решение! Изменил структуры базы... Вынес данные во вторую аблицу и тот-же самый запрос - только джоиню другую таблицу, а результат тот который мне нужен.

Не в сети

#4 16.02.2018 17:55:24

Re: Запрос с leftjoin, НЕ выводит все записи, что не так ?

Найди решение сначала на честном SQL, а уже потом перекладывай его на Eloquent … если захочешь. big_smile


There are two hard things in computer science: cache invalidation, naming things, and off-by-one errors.

Не в сети

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