آموزش مدل در لاراول laravel
در این آموزش شما رو با query scope در لاراول و مدل ها آشنا می کنم. با این روش به راحتی می توانید با database کار کنید و سرعت در برنامه نویسی mvc رو افزایش بدید. با scope امکان استفاده چند باره از یک پرس و جو در برنامتون رو می تونید داشته باشید.
فایل مدل خودتون رو باز کنید. برای ساختن یک scope کافیه کلمه ی scope رو قبل نام متد بیارید. برای مثال پرس و جوی زیر معدل های بالای ۱۵ را در متغیر query$ قرار می دهد :
class Student extends Model { public function scopeAvg($query) { return $query->where('average', '>', 15); } }
کد فوق را در مدلی که از قبل ساخته اید قرار بدید. فایل رو save کنید. حالا برای اینکه از کوئری فوق در هرجای کدتون که خواستید استفاده کنید باید به صورت زیر عمل کنید. برای مثال من کد زیر رو در کنترلر مورد نظرم وارد می کنم:
$getAvg = Student::avg()->get();
کد بالا یعنی برو به مدل Student و متد scopeAvg رو اجرا کن و مقدار رو بگیر در متغیر getAvg قرار بده. متذکر می شم که برای کار با این روش حتما باید با مدل ها در معماری mvc لاراول آشنا باشید. خب تا اینجا کار با static scope رو یاد گرفتید. اما گاهی لازم میشه تا یک پارامتر رو به تابع model خودتون بفرستید تا در کوئری اجرا بشه. این روش فقط با dynamic scope یا پرس و جوی پویا امکان پذیره. فرض کنید بخواهیم توسط کد ملی یک دانش آموز نام آن را پیدا کنیم. در این روش باید کد ملی دانش آموز مورد نظر رو به scope مورد نظرمون در مدل خودمون بفرستیم. در مثال زیر نام مدل را Student ، نام scope را scopeGetId و نام پارامتر ارسالی را studetnId قرار دادیم.
class Student extends Model { public function scopeGetId($query,$studetnId) { return $query->where('stuid',$studetnId)->pluck('studentname'); } }
برای استفاده از پرس و جویی که در مدل ساختید (کد بالا) باید در کنترلر بصورت زیر عمل کنید:
$student = Student::GetId('5214785474')->get();
تذکر: برای فراخوانی پرس و جو به روش scope نباید در کنترلر در اول نام متد کلمه ی scope را بیاورید. برای مثال در مدل scopeGetID را نوشتیم ولی در کنترلر فقط GetId را می نویسیم.
کلمه ی کلیدی pluck فقط ستون مورد نظر از فیلد را برای ما برمی گرداند که در مثال فوق چون ما نام دانش آموز مد نظرمان بود داخل پرانتز نام ستون studentname در دیتابیس رو وارد کردیم.آموزش scope در model رو برای شما تشریح کردیم . اگر سوالی داشتید کامنت کنید تا در اسرع وقت پاسخ دهیم.