PDA

View Full Version : استفاده از groupBy در رابطه ها جداول



rahahost
چهارشنبه 26 آبان 1395, 08:51 صبح
با سلام و احترام خدمت همه دوستان و اساتید محترم .


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

کشور با استانها > یک به چند
استان با تور > چند به چند

تورهایی که ثبت میکنم میتونه چندتا استان داشته باشه که تو این حالت ، اگر من یک کشور رو انتخاب کنم و بخوام از طریق استانهاش به تورها برسم ، توری که دوتا استان داره رو دوبار نمایش میشه.
حالا نمیدونم تو این نوع رابطه ها چطور از groupBy استفاده کنم !

کدم به این شکل هستش :




$country = \App\Country::where('slug' , '=' , $slug)->where('type', '=', 1)
->with(['province.tours.tourlocation', 'province.country'])->first();



به این شکل هم نوشتم ولی باز جوابی نگرفتم :





$country = \App\Country::where('slug' , '=' , $slug)->where('type', '=', 1)
->with(['province.tours' => function($query){
$query->groupBy('tours.id');
}, 'province.tours.tourlocation', 'province.country'])->first();



ممنون میشم راهنماییم کنید که چطور این مشکل رو رفع کنم .

rahahost
چهارشنبه 26 آبان 1395, 09:38 صبح
درست شد :|
برای دوستانی که چنین مشکلی دارن میگم :

وقتی با چنین مشکلی مواجه شدید و نمیتونید از groupBy درون رابطه ها استفاده کنید ، کافیه تو تنظیمات فایل کانفیگ database.php مقدار فیلد 'strict' رو برابر با false قرار بدید تا گوئری زیر عمل کنه :








$country = \App\Country::where('slug' , '=' , $slug)->where('type', '=', 1)
->with(['province.tours' => function($query){
$query->groupBy('id');
}, 'province.country'])->first();