Множественные объединения Laravel — php

#php #laravel

#php #laravel

Вопрос:

как я могу объединить 4 таблицы слева в laravel? Это то, что я пытаюсь сделать:

 DB::table('table 1')
->join('table 2', 'table 1.field 1', '=', 'table 2.field 2')
->leftJoin('table 3','table 2.id','=','table 3.field 3')
->leftJoin('table 4','table 3.field 3','=','table 4.field 4')
->get();
  

Спасибо

Комментарии:

1. ->join преобразуется во внутреннее соединение

Ответ №1:

просто замените first join на leftJoin, как и другие, потому join inner join что в вашем sql-запросе будет normal:

 DB::table('table 1')
->leftJoin('table 2', 'table 1.field 1', '=', 'table 2.field 2')
->leftJoin('table 3','table 2.id','=','table 3.field 3')
->leftJoin('table 4','table 3.field 3','=','table 4.field 4')
->get();
  

Комментарии:

1. таким образом, я не получаю все данные. только данные, которые существуют в последней таблице. я хочу также получить данные, которые есть в первых двух таблицах, но которые не существуют в последней, чтобы получить null

Ответ №2:

Следующим образом вы можете присоединять столько, сколько вам нужно.

 DB::table('table 1')
    ->leftJoin(....)
    ->leftJoin(....)
  

Примечание: как обычный sql-запрос:

  1. соединение (это внутреннее соединение)
  2. leftJoin (соединение слева)
  3. rightJoin (является правильным соединением)

https://laravel.com/docs/6.x/queries#joins