Объединение запросов к БД в Laravel

Для объединения данных из нескольких таблиц в SQL запросах используется "join". В Laravel есть одноимённый метод, который делает то же самое. Рассмотрим несколько примеров объединения.

Объединение INNER и LEFT

Методу "join" соответствует "inner join" из сырого SQL запроса. В этот метод передаётся четыре параметра. Первый - имя таблицы, к которой присоединяются данные. Остальные задают условия присоединения столбцов (можно провести аналогию с методом "where"):
<?php
   $users = DB::table('users')
      ->join('contacts', 'users.id', '=', 'contacts.user_id')
      ->join('orders', 'users.id', '=', 'orders.user_id')
      ->select('users.*', 'contacts.phone', 'orders.price')
      ->get();
?>
Для выполнения "left join" используется метод "leftJoin". Метод принимает те же параметры:
<?php
   $users = DB::table('users')
      ->leftJoin('contacts', 'users.id', '=', 'contacts.user_id')
      ->get();
?>

Сложные условия объединения

Существует возможность создания и более сложных условий объединения. Делается это с помощью замыкания, которое получает объект "JoinClause", позволяя указывать условия для объединения. Приведём пример:
<?php
   $users = DB::table('users')
      ->join('contacts', function ($join) {
         $join->on('users.id', '=', 'contacts.user_id')
            ->where('contacts.user_id', '>', 5);
      })
      ->get();
?>
MouseDC.ru - хостинг, виртуальный хостинг, покупка доменов, проверка доменов, WHOIS, курсы создания сайтов, вебинары по созданию, курсы разработки сайтов, доработка сайтов, сопровождение сайтов, разработка сайтов, техподдержка сайтов
Cмотрите другие статьи:
Была ли статья полезной?
Была ли эта статья полезна? Есть вопрос?
хостинг для сайтов
Закажите недорогой хостинг Заказать

всего от 290 руб