Полное руководство по предложениям левого и правого соединения в построителе запросов Laravel 8

В Laravel 8 построитель запросов предоставляет мощный и гибкий способ получения данных из базы данных. Двумя наиболее часто используемыми типами соединений SQL являются левое соединение и правое соединение, которые позволяют объединять данные из нескольких таблиц на основе заданной связи. В этой статье мы рассмотрим различные методы выполнения операций соединения слева и справа с помощью построителя запросов Laravel 8, а также примеры кода.

Левое соединение.
Левое соединение извлекает все записи из левой таблицы и соответствующие записи из правой таблицы. Если совпадений нет, для столбцов правой таблицы возвращаются значения NULL. Вот несколько методов, которые вы можете использовать для выполнения левого соединения в Laravel 8:

  1. join():

    $result = DB::table('users')
    ->join('orders', 'users.id', '=', 'orders.user_id')
    ->select('users.name', 'orders.order_number')
    ->get();
  2. leftJoin():

    $result = DB::table('users')
    ->leftJoin('orders', 'users.id', '=', 'orders.user_id')
    ->select('users.name', 'orders.order_number')
    ->get();
  3. leftJoinSub():

    $subquery = DB::table('orders')
    ->select('user_id', DB::raw('SUM(total_amount) as total'))
    ->groupBy('user_id');
    $result = DB::table('users')
    ->leftJoinSub($subquery, 'orders', 'users.id', '=', 'orders.user_id')
    ->select('users.name', 'orders.total')
    ->get();

Правое объединение.
Правое объединение извлекает все записи из правой таблицы и соответствующие записи из левой таблицы. Если совпадений нет, для столбцов левой таблицы возвращаются значения NULL. Вот несколько методов, которые вы можете использовать для выполнения правильного соединения в Laravel 8:

  1. join():

    $result = DB::table('users')
    ->join('orders', 'users.id', '=', 'orders.user_id', 'right')
    ->select('users.name', 'orders.order_number')
    ->get();
  2. rightJoin():

    $result = DB::table('users')
    ->rightJoin('orders', 'users.id', '=', 'orders.user_id')
    ->select('users.name', 'orders.order_number')
    ->get();
  3. rightJoinSub():

    $subquery = DB::table('orders')
    ->select('user_id', DB::raw('SUM(total_amount) as total'))
    ->groupBy('user_id');
    $result = DB::table('users')
    ->rightJoinSub($subquery, 'orders', 'users.id', '=', 'orders.user_id')
    ->select('users.name', 'orders.total')
    ->get();

В этой статье мы рассмотрели различные методы выполнения операций левого и правого соединения в Laravel 8 с помощью построителя запросов. Используя эти методы, вы можете эффективно извлекать и комбинировать данные из нескольких таблиц базы данных на основе определенных связей. Понимание и использование этих типов соединений повысит гибкость и эффективность запросов к базе данных в Laravel 8.