رتبه موضوع:
  • 0 رای - 0 میانگین
  • 1
  • 2
  • 3
  • 4
  • 5
استفاده از groupBy در رابطه ها جداول (حل شد)
#1
با سلام و احترام خدمت همه دوستان و اساتید محترم .


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

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

تورهایی که ثبت میکنم میتونه چندتا استان داشته باشه که تو این حالت ، اگر من یک کشور رو انتخاب کنم و بخوام از طریق استانهاش به تورها برسم ، توری که دوتا استان داره رو دوبار نمایش میشه.
حالا نمیدونم تو این نوع رابطه ها چطور از 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();




ممنون میشم راهنماییم کنید که چطور این مشکل رو رفع کنم .
پاسخ
تشکر شده توسط:
#2
درست شد :|
برای دوستانی که چنین مشکلی دارن میگم :

وقتی با چنین مشکلی مواجه شدید و نمیتونید از 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();
پاسخ
تشکر شده توسط: abdollah110110




کاربران در حال بازدید این موضوع: 1 مهمان