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();
Întrebări & Exemple de Cod:
Domenii de Interogare: Local Scopes și Global ScopesAi o nelămurire despre utilizarea comenzii
Domenii de Interogare: Local Scopes și Global Scopessau 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.