В Laravel для составления сложных запросов вы можете использовать построитель запросов (Query Builder) или выражения запросов (Query Expressions) вместе с Eloquent ORM.
1. Построитель запросов:
Построитель запросов предоставляет лаконичный и выразительный интерфейс для создания сложных SQL-запросов в Laravel.
Пример 1: Простой запрос выборки данных из таблицы:
$users = DB::table('users')->get();
Пример 2: Запрос с фильтрацией данных:
$users = DB::table('users') ->where('age', '>', 18) ->get();
Пример 3: Запрос с объединением таблиц и сортировкой:
$users = DB::table('users') ->join('orders', 'users.id', '=', 'orders.user_id') ->select('users.*', 'orders.order_date') ->orderBy('orders.order_date', 'desc') ->get();
Это всего лишь несколько примеров, на самом деле возможностей Query Builder гораздо больше. Вы можете использовать методы where, orWhere, whereIn, whereBetween, orderBy, groupBy, having и многие другие для создания сложных запросов.
2. Выражения запросов:
Выражения запросов предоставляют еще более гибкий способ для создания сложных запросов. Они могут быть использованы как вместе с Query Builder, так и с Eloquent ORM.
Пример 1: Использование выражений запросов с Query Builder:
$query = DB::table('users') ->select(DB::raw('count(*) as user_count')) ->groupBy('account_id') ->havingRaw('user_count > ?', [100]) ->get();
Пример 2: Использование выражений запросов с Eloquent ORM:
$users = User::select('name') ->whereHas('orders', function ($query) { $query->where('status', 'completed'); }) ->get();
Это всего лишь несколько примеров использования выражений запросов. Вы можете использовать методы selectRaw, whereRaw, havingRaw, joinSub, union и другие, чтобы создавать сложные запросы с помощью выражений запросов.
В обоих подходах можно использовать различные методы для ограничения, сортировки, группировки, объединения таблиц и других операций. Но стоит заметить, что правильность составления сложного запроса в Laravel зависит от учета требований вашего проекта и структуры базы данных.