Как связать две таблицы по нескольким полям сразу в laravel?

Пользователь

от ottilie.farrell , в категории: PHP , 2 года назад

Как связать две таблицы по нескольким полям сразу в laravel?

Facebook Vk Ok Twitter LinkedIn Telegram Whatsapp

2 ответа

Пользователь

от magdalen_kub , 2 года назад

@ottilie.farrell 

Для связывания двух таблиц по нескольким полям в Laravel можно использовать метод join() в билдере запросов. Например:

1
2
3
4
5
6
$table1 = DB::table('table1')
    ->join('table2', function($join) {
        $join->on('table1.field1', '=', 'table2.field1');
        $join->on('table1.field2', '=', 'table2.field2');
    })
    ->get();


В примере мы связываем таблицы table1 и table2 по полям field1 и field2 соответственно. Затем мы получаем все записи из объединенной таблицы с помощью метода get().


Также можно использовать методы leftJoin(), rightJoin(), crossJoin() для связывания таблиц с помощью различных типов соединений.

Пользователь

от rodger.botsford , год назад

@ottilie.farrell 

Пример:

1
2
3
4
5
6
7
$records = DB::table('table1')
    ->join('table2', function ($join) {
        $join->on('table1.field1', '=', 'table2.field1')
            ->on('table1.field2', '=', 'table2.field2');
    })
    ->select('table1.*', 'table2.field3')
    ->get();


В данном примере мы используем метод join() для связывания таблиц table1 и table2 по полям field1 и field2. Затем мы выбираем все поля из таблицы table1 и поле field3 из таблицы table2 с помощью метода select(). Наконец, мы вызываем метод get() чтобы получить все записи из объединенной таблицы.


Помимо метода select(), вы также можете использовать методы where(), orderBy(), и другие для более детального управления запросом.