Laravel‘de Eloquent ORM(Object Relation Mapping) sınıfını kullanarak uzun uzun SQL sorguları yazmaktan kurtuluruz. Bu makalede Eloquent modellerine alt fonksiyonlar yazarak bunları proje sürecinde bir çok yerde kullanarak sizi tekrara düşmekten kurtaran bir çözümdür.
Örnek: Makaleler::all(); bu geriye tüm kayıtları döndürür. Ama bizim ihtiyacımız olan özel koşullar olabilir bunu where ile sorgulayabilirsiniz ama birden fazla yerde aynı sorgulamayı yapmak yerine laravelin sağladığı Model Scope çözümüne bakalım.
Makaleler tablosundan aktif olanlarını where sorgusu ile alalım.
Makaleler tablomuz var bu tabloda birde aktif sütunumuz var aktif olanlar 1 olmayan ise 0 olarak kaydediliyor.
$aktifMakaleler = Makaleler::where('aktif', 1)->get();
Ama benim buna diğer modüllerde de ihtiyacım olacak ve tekrar tekrar where sorgusu yazmam gerekecek. Scope çözümü burada devreye giriyor.
class Makaleler extends Model
{
    public function scopeAktif($query)
    {
         return $query->where('aktif', 1);
    }
}
Yukarıdaki tanımlamada Laravel scope‘un bir takma ad olduğunu biliyor. Ve artık aktif makaleleri Makaleler::aktif()->get(); olarak alabileceğim.