#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-запрос:
- соединение (это внутреннее соединение)
- leftJoin (соединение слева)
- rightJoin (является правильным соединением)