Nové metody dotazování v Laravel 11.37.0: Vylepšení relačních dotazů
Společnost Laravel představila další výkonné vylepšení aplikace Eloquent ve své nejnovější verzi. 11.37.0 uvolnění. Díky příspěvku Andrey Helldar, mohou nyní vývojáři používat nový whereDoesntHaveRelation a whereMorphDoesntHaveRelation metody pro zjednodušení dotazů zahrnujících vztahy.
Tyto doplňky výrazně usnadňují načítání modelů, které ne mají specifický vztah, což poskytuje čistší a intuitivnější přístup ve srovnání s předchozími řešeními.
Problém: Řešení chybějících vztahů
Před touto aktualizací poskytoval Laravel metody jako např. whereDoesntHave a whereDoesntHaveMorph pro dotazování modelů s konkrétními vztahy. Vývojáři však často potřebovali slovní a složitou logiku pro dotazování modelů, které postrádaly vztah.
Řešení: Nové metody pro chybějící vztahy
Na stránkách whereDoesntHaveRelation a whereMorphDoesntHaveRelation metody řeší tuto mezeru tím, že zavádějí jednoduchý způsob dotazování modelů, v nichž chybí konkrétní vztahy.
Příklad 1
// BeforeUser::whereDoesntHave('comments', function ($query) { $query->where('created_at', '>', now()->subDay());})->get(); // AfterUser::whereDoesntHaveRelation( 'comments', 'created_at', '>', now()->subDay())->get(); User::whereDoesntHaveRelation( 'comments', 'is_approved', false)->get();
Příklad 2
// BeforeUser::whereDoesntHaveMorph('comments', [Post::class, Video::class], function ($query) { $query->where('created_at', '>', now()->subDay());})->get(); // AfterUser::whereMorphDoesntHaveRelation( 'comments', [Post::class, Video::class], 'created_at', '>', now()->subDay())->get(); User::whereMorphDoesntHaveRelation( 'comments', [Post::class, Video::class], 'is_approved', false)->get();
Varianty OR
Kromě těchto metod zavádí Laravel také své metody OR varianty:
orWhereDoesntHaveRelationorWhereMorphDoesntHaveRelation
Tyto metody umožňují kombinovat dotazy "nemá vztah" s dalšími podmínkami pro složitější případy použití.
Podporované verze
Tato funkce je k dispozici od Laravel 11.37.0, čímž se ještě více upevňuje zaměření frameworku na zkušenosti vývojářů a čistý, udržovatelný kód. Chcete-li prozkoumat technické podrobnosti, navštivte Žádost o stažení na GitHubu.