scope در لاراول چیست ؟

حمید تیموری 2094 بازدید 1397/11/10
scope در لاراول چیست ؟

شاید هنگام آموزش لاراول به واژه ای به نام scope برخورد کرده باشید،
مفهوم scope مختص لاراول نیست، و در اصل یک اصطلاح عمومی در برنامه نویسی است.

اما وقتی از Eloquent استفاده میکنید، قابلیت های زیادی برای شما وجود دارد که کدنویسی شما را آسان تر میکند

برای مثال: شما زمانی که میخواهید یه query بنویسید و یک شرط اجرا کنید به صورت زیر عمل میکنید:

User::where('confirmed',1)->get();

این query کاربرانی را به شما میدهد که تایید شده اند.

حالا به query زیر دقت کنید:

User::whereNull('mobile')->get();

// or 

User::where('mobile', null)->get();

در query بالا هر دو یک جواب خواهند داشت، فقط نحوه نوشتن query تفاوت دارد و اولی ظاهری زیباتر دارد.
شما هم میتوانید مواردی را که زیاد به آنها نیاز دارید، به این شکل تعریف کنید و به راحتی از آنها استفاده کنید.

به زبان ساده به متدهایی که در eloquent از آنها استفاده میکنید و میتوانید خودتان آنها را تعریف کنید scope میگویند !

در مثال اول گفتیم افرادی که تایید شده اند را با query نوشته شده به دست آوردیم، حالا اگر بخواهیم از scope در همان query استفاده کنیم به صورت زیر عمل میکنیم:

1. در مدلی که میخواهیم درون آن scope تعریف کنیم یک متد به صورت زیر اضافه میکنیم:

public function scopeConfirmed($query)
{
    return $query->where('confirmed', 1);
}

دقت کنید که این متد یک پارامتر را به عنوان query دریافت میکند.

2. نامگذاری این متد باید به این صورت باشد که با کلمه scope شروع شود و سپس به صورت capital کلمه یا کلمات دیگر مورد نظرتان را مینویسید و بعد از نوشتن متد، به صورت زیر میتوانید از آن استفاده کنید:

User::confirmed()->get()

دیدید که به راحتی شما میتوانید متدهای خودتان را در مدل تعریف کنید و کدی زیباتر داشته باشید.

البته برای scope ویژگی های دیگری هم وجود دارد که در مطالب بعدی توضیح خواهیم داد !

اگر سوالی داشتید از قسمت نظرات میتوانید مطرح کنید.


دیگر مقالات
حمید تیموری 1345 بازدید 1397/07/01
حمید تیموری 1351 بازدید 1397/05/07
امید کیانی 2771 بازدید 1398/07/21
حمید تیموری 6039 بازدید 1397/07/09
امید کیانی 2648 بازدید 1398/07/19


نظرات (0)
هنوز نظری ثبت نشده است
برای ثبت نظر ابتدا وارد سایت شوید