Освоение пользовательских столбцов и условий в базе данных Laravel::raw

В Laravel DB::rawпозволяет нам писать необработанные операторы SQL внутри наших запросов. Эта мощная функция открывает целый мир возможностей, когда дело доходит до создания пользовательских столбцов и применения условий в запросах к базе данных. В этой статье мы рассмотрим несколько методов использования DB::rawдля создания пользовательских столбцов и применения условий в Laravel.

Метод 1: использование базового настраиваемого столбца
Чтобы создать настраиваемый столбец с помощью DB::raw, мы можем просто передать необработанное выражение SQL в качестве аргумента в selectметод. Например, чтобы объединить столбцы first_nameи last_nameв специальный столбец с именем full_name, мы можем использовать следующий код:

$results = DB::table('users')
    ->select(DB::raw('CONCAT(first_name, " ", last_name) as full_name'))
    ->get();

Метод 2: применение условий к настраиваемым столбцам
Мы также можем применять условия к настраиваемым столбцам, используя метод whereRaw. Допустим, мы хотим получить пользователей, у которых full_nameначинается с буквы «J». Вот как мы можем этого добиться:

$results = DB::table('users')
    ->select(DB::raw('CONCAT(first_name, " ", last_name) as full_name'))
    ->whereRaw('CONCAT(first_name, " ", last_name) LIKE "J%"')
    ->get();

Метод 3. Использование настраиваемых столбцов в соединениях
Настраиваемые столбцы также можно использовать в условиях соединения. Предположим, у нас есть две таблицы: usersи orders. Мы хотим получить пользователей вместе с их общей суммой заказов. Мы можем использовать следующий код:

$results = DB::table('users')
    ->join('orders', 'users.id', '=', 'orders.user_id')
    ->select('users.id', 'users.email', DB::raw('SUM(orders.amount) as total_amount'))
    ->groupBy('users.id', 'users.email')
    ->get();

Метод 4: агрегирование настраиваемых столбцов
Мы можем агрегировать настраиваемые столбцы с помощью таких функций, как SUM, COUNT, MAXи т. д. Например, чтобы получить общее количество заказов, сделанных каждым пользователем, мы можем использовать следующий код:

$results = DB::table('users')
    ->join('orders', 'users.id', '=', 'orders.user_id')
    ->select('users.id', 'users.email', DB::raw('COUNT(orders.id) as total_orders'))
    ->groupBy('users.id', 'users.email')
    ->get();

Использование DB::rawв Laravel позволяет нам создавать собственные столбцы и применять условия в запросах к базе данных, выходящие за рамки ограничений Eloquent ORM. Используя гибкость необработанных выражений SQL, мы можем с легкостью выполнять сложные манипуляции с данными и их агрегацию. Будь то объединение столбцов, применение условий или выполнение агрегирования, DB::rawот Laravel предоставляет инструменты, необходимые для управления нашими запросами.