Mistrovské dotazy Laravel Where Not k vyloučení nežádoucích dat

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

Poptat web

12. 12. 2024

Mistrovské dotazy Laravel Where Not k vyloučení nežádoucích dat

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.

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