• Время чтения ~1 мин
  • 30.03.2023

Пакет 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

Comments

No comments yet
Yurij Finiv

Yurij Finiv

Full stack

Про мене

Professional Fullstack Developer with extensive experience in website and desktop application development. Proficient in a wide range of tools and technologies, including Bootstrap, Tailwind, HTML5, CSS3, PUG, JavaScript, Alpine.js, jQuery, PHP, MODX, and Node.js. Skilled in website development using Symfony, MODX, and Laravel. Experience: Contributed to the development and translation of MODX3 i...

Об авторе CrazyBoy49z
WORK EXPERIENCE
Контакты
Ukraine, Lutsk
+380979856297