В Laravel 8 построитель запросов предоставляет мощный и гибкий способ получения данных из базы данных. Двумя наиболее часто используемыми типами соединений SQL являются левое соединение и правое соединение, которые позволяют объединять данные из нескольких таблиц на основе заданной связи. В этой статье мы рассмотрим различные методы выполнения операций соединения слева и справа с помощью построителя запросов Laravel 8, а также примеры кода.
Левое соединение.
Левое соединение извлекает все записи из левой таблицы и соответствующие записи из правой таблицы. Если совпадений нет, для столбцов правой таблицы возвращаются значения NULL. Вот несколько методов, которые вы можете использовать для выполнения левого соединения в Laravel 8:
-
join():
$result = DB::table('users') ->join('orders', 'users.id', '=', 'orders.user_id') ->select('users.name', 'orders.order_number') ->get();
-
leftJoin():
$result = DB::table('users') ->leftJoin('orders', 'users.id', '=', 'orders.user_id') ->select('users.name', 'orders.order_number') ->get();
-
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:
-
join():
$result = DB::table('users') ->join('orders', 'users.id', '=', 'orders.user_id', 'right') ->select('users.name', 'orders.order_number') ->get();
-
rightJoin():
$result = DB::table('users') ->rightJoin('orders', 'users.id', '=', 'orders.user_id') ->select('users.name', 'orders.order_number') ->get();
-
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.