Laravel 11.37.0: Nové metody dotazování pro chybějící vztahy

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

Poptat web

07. 01. 2025

Laravel 11.37.0: Nové metody dotazování pro chybějící vztahy

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

// Before
User::whereDoesntHave('comments', function ($query) {
$query->where('created_at', '>', now()->subDay());
})->get();
 
// After
User::whereDoesntHaveRelation(
'comments', 'created_at', '>', now()->subDay()
)->get();
 
User::whereDoesntHaveRelation(
'comments', 'is_approved', false
)->get();

Příklad 2

// Before
User::whereDoesntHaveMorph('comments', [Post::class, Video::class], function ($query) {
$query->where('created_at', '>', now()->subDay());
})->get();
 
// After
User::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:

  • orWhereDoesntHaveRelation
  • orWhereMorphDoesntHaveRelation

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.

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