آموزش استفاده از with در eloquent لاراول

نویسنده:  حسین شفیعی
تاریخ انتشار:  25 فروردین 1399
تاریخ آپدیت:  25 فروردین 1399
دسته بندی ها:  لاراول   PHP 

فرض کنید یک مدل با نام Post  داریم و این مدل پست با مدلی با نام Comment رابطه یک به چند دارند یعنی هر پست میتواند چندین کامنت داشته باشد، حال اگر بخواهیم تمام پست ها بهمراه کامنت های آن پست را از دیتا بیس بخوانیم باید کد زیر را بنویسیم.

در اینجا فرض میکنیم روابط را از قبل در مدل ها نوشته اید.



$posts = Post::with('comments')->get();

با اینکار تمام کامنت ها بهمراه پست ها بر میگردند.حال فرض کنید بخواهیم فقط کامنت هایی از دیتابیس خوانده شوند که تایید شده هستند.

$posts = Post::whereHas('comments',function(Builder $query){

   $query->where('approved',true);

})->get();

 

یکی از راه حل ها نوشتن کد بالاست اما کد بالا یک مشکل اساسی دارد و آن این است که اگر پستی کامنتی نداشته باشد از دیتا بیس خوانده نمی شود. راه  حل بهتر استفاده از with  می باشد:

$posts = Post::with([

'comments'=>function($query){

   $query->where('approved',true);

}

])->get();

 

این روش بسیار خوبی برای اینکار هست.  کاربرد های with  به همین جا ختم نمیشه، مثلا فرض کنید فقط میخوایم آیدی و عنوان کامنت ها رو بر گردونده بشه و نیاز به همه ی ستون ها نداریم.

 

 

$posts = Post::with('comments:id,title')->get();

 

یا فرض کنید خود کامنت هم با جدول دیگه ای به نام images رابطه یک به چند داره یعنی فرض کنید هر کامنت یه عکس هم داره که این اطلاعات تو جدولی به نام images  ذخیره میشه و ما میخوایم بهمراه پست ها کامنت ها و عکسش هم برامون از دیتا بیس خونده بشه :

 

$posts = Post::with('comments.image')->get();

 

یا اینکه این مدلی کوئری بزنید

$posts = Post::with([

'comments'=>function($query){

   $query->where('approved',true);

},

'comments.image'=>function($query){

   $query->where('size','>=',600);

}

])->get();

 

و حتی میتونید این مدلی هم ازش استفاده بکنید

 

$posts = Post::with('user','comments.image')->get();

 

 

تو مثال بالا با فرض اینکه هر پست رو یه کاربر نوشته ما اومدیم به همراه کامنت هاو عکس مربوطه بهشون کاربر مربوط به پست رو هم برگردوندیم.

امیدوارم که این مطلب براتون مفید بوده باشه.

 

#Eloquent  
     163

دوره های آموزشی

با کیفیت ترین دور های آموزشی برنامه نویسی PHP و JavaScript

مقاله های بروز

دنبال کردن دنیای تکنولوژی و اخبار زبان ها و فریمورک های جدید برنامه نویسی

نقشه راه

نقشه ای برای تبدیل شدن به یک برنامه نویس حرفه ای

رفع اشکالات برنامه نویسی

رفع اشکالات برنامه نویسی شما با پرس و جو بین دوستان و همکارانتان

مقالات پیشنهادی

ابتدایی
دسته بندی ها : جاوا اسکریپت

بررسی ابتدایی 10 فریمورک برتر جاوا اسکریپت در سال 2019

در این مقاله قصد داریم تا بهترین فریمورک های جاوا اسکریپت مانند ریکت و ویو جی اس و ... که در سال 20...

متوسط
دسته بندی ها : لاراول

برخی از ویژگی های مهمی که لاراول را محبوب کرده است

در این مقاله به بررسی موارد مهمی میپردازیم که در محبوبیت فریمورک لاراول نقش زیادی داشته اند

متوسط
دسته بندی ها : لاراول

دلایل پیدایش فریمورک محبوب لاراول و بررسی نسخه های مختلف آن

در این مقاله به بررسی نسخه های مختلف لاراول و ویژگی هایی که در هر نسخه به این فریمورک اضافه شده است...

متوسط
دسته بندی ها : پکیج های لاراول PHP

یه پکیج کامل برای کار با تاریخ شمسی در php و لاراول (morilog/jalali)

در این مقاله میخواهیم به معرفی بهترین و کاملترین پکیج کار با تاریخ شمسی که با زبان php نوشته شده اس...

ابتدایی

نکات مهمی که باید در مسیر تبدیل شدن به یک برنامه نویس حرفه ای به آن ها توجه کنید

شما می‌توانید برنامه‌نویسی را بیاموزد و وارد این حرفه شوید، اما پیمودن این مسیر فوت و فن هایی دارد...

متوسط
دسته بندی ها : لاراول PHP

حقه هایی برای استفاده از Eloquent در لاراول - سری اول

در این مقاله حقه ها و ترفند هایی از Eloquent را به شما می گوییم که کمتر به آنها پرداخته شده است، ا...

دیدگاه های کاربران

ثبت دیدگاه جدید

شما میتوانید دیدگاه خود را در کادر زیر بنویسید و سپس روی دکمه ارسال دیدگاه کلیک کنید. دیدگاه شما پس از تایید نمایش داده خواهد شد.

برای استایل دادن به نوشته های خود میتوانید از Mark-down استفاده کنید.

مطالعه قوانین mark-down

پیشنمایش دیدگاه شما

هیچ دیدگاهی برای این موضوع ثبت نشده است.

اولین کسی باشید که برای این موضوع دیدگاهی مینویسد.