Domenii de Interogare: Local Scopes și Global Scopes în Laravel

eloquent Laravel 11.x / Eloquent Q&A / Distribuie cod

Encapsularea logicii frecvente de filtrare SQL în metode reutilizabile (Local Scopes) sau aplicarea automată a filtrelor pe toate interogările (Global Scopes).

Sintaxă
public function scopeActive($query) { return $query->where('is_active', true); }

Pentru a evita scrierea repetitivă a acelorași clauze where() în controllere, Eloquent pune la dispoziție Scopes:

  • Local Scopes: Metode definite în model cu prefixul scopeNume($query), apelate fluent în interogări (de exemplu: User::popular()->active()->get()).
  • Global Scopes: Reguli aplicate automat fiecărei interogări efectuate pe modelul respectiv (utilizate masiv pentru filtrarea pe chiriaș în arhitecturi Multi-Tenant).
Exemplu: Local Scope pentru articole publicate și populare
namespace App\Models;

use Illuminate\Database\Eloquent\Builder;
use Illuminate\Database\Eloquent\Model;

class Article extends Model
{
    public function scopePublished(Builder $query): void
    {
        $query->where('status', 'published')->whereNotNull('published_at');
    }

    public function scopeTrending(Builder $query, int $minViews = 1000): void
    {
        $query->where('views_count', '>=', $minViews);
    }
}

// Utilizare în controller:
// $trendingArticles = Article::published()->trending(5000)->latest()->get();

Comunitate & Schimb de cunoștințe

Întrebări & Exemple de Cod: Domenii de Interogare: Local Scopes și Global Scopes

Ai o nelămurire despre utilizarea comenzii Domenii de Interogare: Local Scopes și Global Scopes sau ai descoperit un truc / fragment de cod util? Distribuie-l cu ceilalți programatori!

💬

Fii primul care pune o întrebare sau distribuie un fragment de cod / prompt!

Nu au fost adăugate încă întrebări sau exemple de cod pentru această pagină. Dacă ai întâlnit o problemă sau ai un snippet util, adaugă-l mai jos pentru a-i ajuta pe ceilalți.

Comunitate Adaugă o întrebare sau distribuie un cod

Moderare & Siguranță:

Pentru a menține calitatea și securitatea informațiilor, fiecare întrebare sau fragment de cod/prompt este analizat (manual sau prin moderare asistată de AI) înainte de publicare.