Zjednodušené seskupené agregáty v nástroji Laravel Query Builder

DŮLEŽITÉ UPOZORNĚNÍ: TENTO POŽADAVEK NA STAŽENÍ BYL OPĚT VRÁCEN KVŮLI ZMĚNÁM. Novinky v Laravelu: Agregace podle skupin Představení seskupených agregátních metod, pozoruhodné vyle...

Světlý režim slouží jen pro ukázku funkcionality. Proto používejte tmavou verzi webu.

25. 01. 2025

Zjednodušené seskupené agregáty v nástroji Laravel Query Builder

DŮLEŽITÉ UPOZORNĚNÍ: TENTO POŽADAVEK NA STAŽENÍ BYL OPĚT VRÁCEN KVŮLI ZMĚNÁM.

Novinky v Laravelu: Agregace podle skupin

Představení seskupených agregátních metod, pozoruhodné vylepšení nástroje Laravel pro tvorbu databázových dotazů s. Žádost o stažení #53679, přispěl GromNaN. Tato aktualizace přidává nové metody pro provádění seskupených agregovaných výpočtů, díky nimž jsou databázové dotazy čistší, výraznější a snadněji se udržují.

Pochopení problému

Před touto aktualizací bylo provádění souhrnných operací, jako je např. count, sum, min, maxa avg vyžadoval kombinaci groupBy a surové výrazy. Tento přístup byl sice efektivní, ale často byl mnohomluvný a méně intuitivní. Pro vývojáře pracující na rozsáhlých nebo složitých aplikacích se takové dotazy mohly rychle stát náchylnými k chybám a hůře čitelnými.

Vezměme si tento příklad:

$salesByCategory = DB::table('sales')
->select('category_id', DB::raw('SUM(amount) as total_sales'))
->groupBy('category_id')
->get();

Tento kód je sice funkční, ale obsahuje hrubé výrazy a ruční seskupování, což může nováčky mást nebo vést k problémům s údržbou.

Zavedení skupinových agregátních metod

Díky novým metodám Laravel zjednodušuje seskupené agregační operace a zavádí následující:

  • countByGroup
  • minByGroup
  • maxByGroup
  • sumByGroup
  • avgByGroup

Tyto metody zjednodušují databázové dotazy tím, že abstrahují běžné vzory do expresivních, opakovaně použitelných metod.

Příklad použití

Zde je návod, jak můžete přepsat předchozí příklad pomocí nového sumByGroup metoda:

$salesByCategory = DB::table('sales')
->groupBy('category_id')
->sumByGroup('amount');

Tento jediný řádek kódu provede stejnou operaci, ale je čitelnější a méně náchylný k chybám. Jasně vyjadřuje záměr a dodržuje filozofii elegantní syntaxe Laravelu.

Bližší pohled na jednotlivé metody

  1. countByGroup: Spočítá počet záznamů v každé skupině.

    $counts = DB::table('users')->groupBy('status')->countByGroup();
  2. minByGroup: Vyhledá minimální hodnotu v každé skupině.

    $minSalaries = DB::table('employees')->groupBy('department_id')->minByGroup('salary');
  3. maxByGroup: Určuje maximální hodnotu v každé skupině.

    $maxPrices = DB::table('products')->groupBy('category_id')->maxByGroup('price');
  4. sumByGroup: Vypočítá součet hodnot v každé skupině.

    $totalSales = DB::table('orders')->groupBy('region_id')->sumByGroup('amount');
  5. avgByGroup: Vypočítá průměrnou hodnotu pro každou skupinu.

    $avgRatings = DB::table('reviews')->groupBy('product_id')->avgByGroup('rating');

Původní článek publikoval Nabil Hassen.

Mohlo by vám pomoct

Praktické věci kolem webu

Než se pustíte do webu, hodí se mít jasno v podkladech, WordPressu, cookies a měření.

Google reference

Co říkají klienti

Ukázky skutečných recenzí, které klienti zanechali na mém Google profilu.

Přejít na recenze
★ ★ ★ ★ ★

„Člověk, který své práci a rozumí a ví co dělá. Velmi rychlá komunikace a profesionální přístup. Doporučuji.“

Jaroslav Kupča
Google
★ ★ ★ ★ ★

„Skvělá spolupráce, při dalších projektech určitě nebudu shánět někoho jiného.“

Roman Koňařík
Google
★ ★ ★ ★ ★

„S panem Vančurou jsem spolupracovala na tvorbě mých webových stránek a jsem maximálně spokojená. Oceňuji profesionální přístup, rychlou komunikaci a schopnost přesně pochopit moje představy. Web je moderní, přehledný, funkční a skvěle vypadá i na mobilu. Celý proces proběhl hladce, s jasným vysvětlením jednotlivých kroků a výborným výsledkem. Určitě doporučuji každému, kdo hledá spolehlivý a kvalitní přístup.“

Barbora Zemánková
Google
★ ★ ★ ★ ★

„Spolupráce při tvorbě konfigurátoru proběhla naprosto bez problémů. Oceňuji profesionální přístup, rychlou komunikaci a schopnost pochopit specifický projekt od A do Z. Konfigurátor je přehledný, funkční a přesně odpovídá mým požadavkům. Rozhodně doporučuji.“

mareksevcik_FPV
Google
★ ★ ★ ★ ★

„Velmi dobrá a rychlá spolupráce. Doporučuji!“

Leoš Kaucký
Google
★ ★ ★ ★ ★

„Přesně takto si představujeme profesionální práci. Dekujeme“

STAVILLI
Google
★ ★ ★ ★ ★

„Ať už se jedná o optimalizaci webu, nebo tvorbu na míru oceňuji kromě profesionální práce a znalostí problematiky také férový přístup a komunikaci.“

Aleš Illický
Google
★ ★ ★ ★ ★

„Děkuji za profesionální spolupráci, vše dle domluvy, naprostá spokojenost a mohu jen vřele doporučit.... Při dalších projektech určitě opět využiji Vašich služeb“

Peter Spilak
Google
★ ★ ★ ★ ★

„Profesionalita a velká ochota, nemohu jinak než doporučit“

Magdalena Vašková
Google
★ ★ ★ ★ ★

„Skvělá zkušenost při tvorbě webu, profesionální přístup, rychlost, ochota pomoci“

Jana Kono
Google
★ ★ ★ ★ ★

„Rychlá spolupráce a komunikace – mohu jen doporučit.“

Gawix
Google
★ ★ ★ ★ ★

„Moc mi pomohl, když jsem potřebovala pomoc s webem. A bylo to gratis :)). Jsem mu neskonale vděčná.“

Radka Arbesová
Google
★ ★ ★ ★ ★

„Děkuji Jiřímu za rychlou a kvalitní spolupráci na tvorbě webu. Srozumitelná a ochotná komunikace mě vždycky potěší a přináší důvěru.“

Jiří Mařík
Google
★ ★ ★ ★ ★

„Jsem maximálně spokojená. Rychlost, ochota a cenově dostupné. Děkuji“

Veronika Černá
Google
★ ★ ★ ★ ★

„Naprostá spokojenost. Rychlá komunikace, skvělá cena a odborná pomoc. Moc děkuji :)“

Patricie Kučerová
Google
★ ★ ★ ★ ★

„Velká spokojenost, rychlost a p. Vančura moc dobře ví co dělá. :)“

Ondřej Daniško
Google
★ ★ ★ ★ ★

„dobrá práce, rychlá odezva“

Zuzana Jírová
Google
★ ★ ★ ★ ★

„S programátory mám zkušeností hodně, ale tady musím opravdu pochválit. Pro mě a mé přátele vytvořil skvělý nástroj na evidenci sbírek a opravdu se to povedlo. Bylo to hotové rychle, kvalitně a za skvělou cenu. Komunikace funguje velmi rychle, což je super a ne úplně standard. Díky za super práci, za mě 100% spokojenost!“

Zdeněk
Google
★ ★ ★ ★ ★

„Vše bylo rychlé a hlavně to funguje. Dobrá práce.“

Lukáš Bartášek
Google
★ ★ ★ ★ ★

„Normálně recenze nepíši, ale zde rád doporučím kvalitní práci. Jiří pro mě vytvořil web pro dětské tábory. Kvalitní práce, rychlá komunikace a vlastní nápady, které Jiří sám přidá, jsou na velice vysoké úrovni. Nemohu hodnotit jinak než 5/5.“

Tomáš Loněk
Google
★ ★ ★ ★ ★

„Pan Jiri nam delal jiz 3 webove stranky a vzdy velka spokojenost, je mega rychly a vse hned kladne vyridi, mohu pouze doporucit. Poradi si bez problemu i s rezervacnimi kalendaremi, udrzbou socialnich siti, atd.“

Barbara Mašková
Google