• Czas czytania ~1 min
  • 30.03.2023

Pakiet wyrażeń zapytań dla Laravel zastępuje wszelkie nieprzetworzone wywołania zapytań wyrażeniami. Zamiast pisać następujący przykład z pliku readme:Możesz napisać coś podobnego używając tego pakietu:

// 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();

Poza bardziej zwięzłym kodem, dlaczego miałbyś chcieć użyć czegoś takiego jak ten pakiet? Plik readme opisuje, jak ten pakiet pasuje do aplikacji Laravel:

Implementacja bazy danych Laravel zapewnia dobry sposób pracy z wieloma bazami danych, jednocześnie abstrahując od ich wewnętrznego działania...

Jeśli jednak chcemy korzystać z większej liczby funkcji bazy danych niż zapewnia Laravel, musimy wrócić do surowych wyrażeń SQL i napisać kod specyficzny dla bazy danych. Pakiet wyrażeń zapytań opiera się na nowych funkcjach wprowadzonych w Laravel 10 w celu rozwiązania tego problemu.

W chwili pisania tego tekstu pakiet ten obsługuje różne wyrażenia, takie jak:

  • Wartości Aliasy Operatory arytmetyczne Operatory
  • bitowe Porównanie i operatory logiczne Funkcje agregujące Warunkowe
  • Jeśli chcesz dowiedzieć się więcej o tym pakiecie, sprawdź laravel-query-expressions w witrynie GitHub.If you'd like to learn more about this package, check out laravel-query-expressions
  • on GitHub.

Możesz zainstalować ten pakiet w swoim projekcie Laravel 10 poprzez kompozytora:

composer require tpetry/laravel-query-expressions

Comments

No comments yet
Yurij Finiv

Yurij Finiv

Full stack

O

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...

O autorze CrazyBoy49z
WORK EXPERIENCE
Kontakt
Ukraine, Lutsk
+380979856297