Porozumění whereNot Dotazy v systému Laravel
whereNot dotazy v Laravelu slouží k načítání záznamů, které dělají ne splňují určitou podmínku. Chcete-li například získat všechny uživatele kromě těch s rolí "admin", můžete použít příkaz. whereNot dotazu k dosažení tohoto cíle.
Tyto dotazy vám pomohou vyloučit data z výsledků, takže se můžete snadno soustředit pouze na informace, které potřebujete.
Všechny typy whereNot Dotazy v systému Laravel
1. whereNot
Tato metoda vylučuje výsledky založené na jedné podmínce. Například:
Příklad: Vyloučení uživatelů s určitou rolí
// these are equivalent to the whereNot method$users = User::where('role', '!=', 'admin')->get();$users = User::where('role', '<>', 'admin')->get(); $users = User::whereNot('role', 'admin')->get();
Tento dotaz vyhledá všechny uživatele, jejichž role sloupec je ne rovná se "admin".
2. whereNotIn
Pokud potřebujete z výsledků vyloučit více hodnot, použijte následující příkaz whereNotIn.
Příklad: Vyloučení více rolí
$users = User::whereNotIn('role', ['admin', 'editor'])->get();
Tento dotaz vylučuje uživatele s rolí "admin" nebo "editor".
3. whereNotNull
Chcete-li vyloučit záznamy, ve kterých je sloupec nulový, můžete použít příkaz whereNotNull.
Příklad: Získání uživatelů s nevyplněnými e-maily
$users = User::whereNotNull('email')->get();
Tento dotaz vyhledá všechny uživatele, kteří mají e-mailovou adresu.
4. whereNull
Ačkoli se nejedná zrovna o whereNot dotaz, jeho doplněk whereNull lze také účinně použít. Například:
Příklad: Získání uživatelů bez e-mailové adresy
$users = User::whereNull('email')->get();
Tento dotaz vyhledá všechny uživatele, jejichž email sloupec je nulový.
5. whereNotBetween
Pokud potřebujete vyloučit záznamy, které spadají do určitého rozsahu, použijte příkaz whereNotBetween.
Příklad: Vyloučení objednávek v rámci rozsahu dat
$orders = Order::whereNotBetween('created_at', ['2024-01-01', '2024-12-31'])->get();
Tento dotaz vyhledá všechny objednávky mimo zadaný rozsah dat.
6. whereNotExists
Chcete-li vyloučit výsledky na základě souvisejícího dotazu, použijte příkaz whereNotExists.
Příklad: Vyloučení uživatelů bez objednávek
$users = User::whereNotExists(function ($query) { $query->select(DB::raw(1)) ->from('orders') ->whereRaw('orders.user_id = users.id');})->get();
Tento dotaz vyhledá uživatele, kteří nemají žádné příkazy v seznamu orders tabulka.
7. whereNot s uzávěry
Pro složitější logiku můžete použít uzávěr uvnitř příkazu whereNot dotaz.
Příklad: Vyloučení uživatelů na základě více podmínek
$users = User::whereNot(function ($query) { $query->where('role', 'admin') ->orWhere('is_active', false);})->get();
Tento dotaz vyhledá všechny uživatele, kteří nejsou správci a zároveň jsou aktivní.
Všimněte si, že všechny výše uvedené metody, u nichž nelze použít podmínku "OR", jako např. orWhereNot, orWhereNotIn, atd.
Kombinace whereNot s dalšími podmínkami
Můžete kombinovat whereNot dotazy s dalšími metodami, abyste zpřesnili výsledky. Například:
Příklad: Získání aktivních uživatelů s výjimkou administrátorů
$users = User::whereNot('role', 'admin') ->where('is_active', true) ->get();
Tento dotaz vyhledá všechny aktivní uživatele, jejichž role je ne "Administrátor."
Závěrečné shrnutí
whereNot a související metody (whereNotIn, whereNotNull, whereNotBetween, whereNotExistsa whereNot s uzávěrkami) vám dávají mocné nástroje k vyloučení nežádoucích dat z dotazů. Pochopení a zvládnutí těchto metod vám pomůže psát čistší a efektivnější kód Laravelu.