Novinky ve verzi Laravel 12.29: withoutGlobalScopesExcept()
Laravel 12.29 přináší novou praktickou metodu Eloquent: withoutGlobalScopesExcept(). To umožňuje zakázat všechny globální obory dotazu kromě těch, které chcete výslovně zachovat.
Co to dělá
Dříve jste mohli:
- Použijte
withoutGlobalScope()odebrat jeden obor. - Použijte
withoutGlobalScopes()odebrat všechny nebo několik oborů.
Nyní s:
Post::withoutGlobalScopesExcept(['tenant'])->get();
Odeberete všechny globální obory kromě tenant.
Příklad
class Post extends Model{ protected static function booted() { static::addGlobalScope('published', fn ($q) => $q->where('published', true)); static::addGlobalScope('tenant', fn ($q) => $q->where('tenant_id', auth()->id())); }} // Only keep the tenant scope:$posts = Post::withoutGlobalScopesExcept(['tenant'])->get();
Proč je to důležité
Díky této funkci jsou dotazy výstižnější a stručnější. Místo ručního zakazování více rozsahů nebo opětovného přidávání podmínek můžete na bílou listinu zařadit jen ty, které potřebujete.
Podrobnosti naleznete v části PR #56957.