Laravel’de “scope” metodları, Eloquent modellerinde sıkça kullanılan ve veritabanı sorgularını düzenlemek için kullanılan özel metodlardır. Bu metodlar, belirli bir sorgu kriterini veya filtresini tanımlar ve bu filtrelemeyi sorgulara kolayca eklemenizi sağlar. İşte basit bir örnek:
Örnek olarak, bir blog uygulamasındaki yazıları temsil eden bir Post modeli olduğunu varsayalım. Bu yazıların bazıları “aktif” durumunda olabilir. Aktif olmayan yazılar, ön yüzde gösterilmemelidir. Bu durumu scope metodunu kullanarak ele alabilirsiniz.
use Illuminate\Database\Eloquent\Model; class Post extends Model { // Aktif yazıları filtrelemek için scope metodu public function scopeActive($query) { return $query->where('status', 'active'); } }
Yukarıdaki örnekte, scopeActive adında bir metod oluşturduk. Bu metod, veritabanı sorgusu oluşturur ve “status” sütunu “active” olan yazıları seçer. $query parametresi, Eloquent sorgu oluşturucusunu temsil eder ve bu sorgu oluşturucusu ile sorguya eklemeler yapabiliriz.
Bu scope metodunu kullanarak, aktif yazıları sorgulamak için aşağıdaki gibi kullanabilirsiniz:
$activePosts = Post::active()->get();
Bu kod, yalnızca “active” durumunda olan yazıları çeker ve $activePosts değişkenine atar. Bu sayede, aynı filtrelemeyi başka yerlerde de kullanabilir ve kodunuzu daha okunabilir hale getirebilirsiniz.