• Час читання ~1 хв
  • 30.03.2023

Пакет «Вирази запитів» для 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();

чому б ви хотіли використовувати щось на зразок цього пакета? Readme описує, як цей пакет вписується у ваші програми Laravel: реалізація бази даних Laravel забезпечує хороший спосіб роботи з кількома базами даних,

абстрагуючись від їх внутрішньої роботи...

Однак, коли ми хочемо використовувати більше функціональних можливостей бази даних, ніж надає Laravel, ми повинні повернутися до необроблених виразів SQL і написати код, специфічний для бази даних. Пакет виразів запитів базується на нових функціях, введених у Laravel 10 для вирішення цієї проблеми.

На момент написання статті цей пакет підтримує різні вирази, такі як:Значення псевдонімів Арифметичні оператори Порозрядні оператори Порівняння та логічні оператори

  • Агрегатні функції
  • Умовні
  • Якщо ви хочете дізнатися більше про цей пакет, перегляньте laravel-query-вирази на 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