Пакет Query Expressions для Laravel заменяет любые необработанные вызовы запросов выражениями. Вместо того, чтобы писать следующий пример из файла readme:
// Instead of:
User::query()
->when(isPostgreSQL(), fn ($query) => $query->selectRaw('coalesce("user", "admin") AS "value"'))
->when(isMySQL(), fn ($query) => $query->selectRaw('coalesce(`user`, `admin`) AS `value`'))
Вы можете написать что-то вроде следующего, используя этот пакет:
User::select(
new Alias(new Coalesce(['user', 'admin']), 'count')
);
// More examples:
// UPDATE user_quotas SET credits = credits - 15 WHERE id = 1985
$quota->update([
'credits' => new Subtract('credits', new Number(15)),
]);
// SELECT id, name, (price - discount) * 0.2 AS vat FROM products
Product::select([
'id',
'name',
new Alias(new Multiply(new Subtract('price', 'discount'), Number(0.2)), 'vat')
])->get();
Помимо кода terser, зачем вам использовать что-то вроде этого пакета? Файл readme описывает, как этот пакет вписывается в ваши приложения Laravel:
реализация базы данных Laravel обеспечивает хороший способ работы с несколькими базами данных, абстрагируясь от их внутренней работы ...
Однако, когда мы хотим использовать больше функциональных возможностей базы данных, чем предоставляет Laravel, мы должны вернуться к необработанным выражениям SQL и написать код, специфичный для базы данных. Пакет Query Expressions основан на новых функциях, представленных в Laravel 10 для решения этой проблемы.
На момент написания этой статьи этот пакет поддерживает различные выражения, такие как:
- Значения
- Псевдонимы Арифметические операторы Побитовые
- операторы
- Сравнение и Логические операторы
- Агрегатные функции
- Условные
Если вы хотите узнать больше об этом пакете, ознакомьтесь с laravel-query-expressions на GitHub. Вы можете установить этот пакет в свой проект Laravel 10 через composer:
composer require tpetry/laravel-query-expressions