سلام دوستان ، وقت همگی بخیر .
من یه مدل برای کشورها ، استانها دارم به اسم :
Tourlocation
یه مدل هم دارم برای معرفی تورها ( Tour ) اون کشورها و استانها که به رابطشون به این شکله :
رابطه کشور و استانها : یک به چند
رابطه استان به کشور : یک به یک
رابطه کشور به تور : چند به چند
رابطه استان به تور : چند به چند
هر تور میتونه به تنهایی برای یک کشور باشه و همچنین میتونه شامل استانهای زیادی هم بشه ( مثلا تور های ترکیبی که میتونه شامل چندین استان و کشور بشه )
حالا مسئله اینجاست :
وقتی میخوام تورهای یک کشور رو با تورهای استانهای اون کشور بگیرم ، مشکل دارم و در دو مرحله باید انجام بشه :
اینطوری تورهای اون کشور رو میگیرم :
اینطوری هم تورهای استانهای اون کشور رو ببینم :
تو این حالت اگر یک تور درون یک کشور و یکی از استانهای اون کشور ثبت شده باشه ، یکبار درون تورهای اون کشور و یکبار درون تورهای استانهای اون کشور نمایش داده میشه
با groupBy هم نتونستم خروجی رو یونیک کنم
کدی که نوشتم :
من یه مدل برای کشورها ، استانها دارم به اسم :
Tourlocation
یه مدل هم دارم برای معرفی تورها ( Tour ) اون کشورها و استانها که به رابطشون به این شکله :
رابطه کشور و استانها : یک به چند
رابطه استان به کشور : یک به یک
رابطه کشور به تور : چند به چند
رابطه استان به تور : چند به چند
هر تور میتونه به تنهایی برای یک کشور باشه و همچنین میتونه شامل استانهای زیادی هم بشه ( مثلا تور های ترکیبی که میتونه شامل چندین استان و کشور بشه )
حالا مسئله اینجاست :
وقتی میخوام تورهای یک کشور رو با تورهای استانهای اون کشور بگیرم ، مشکل دارم و در دو مرحله باید انجام بشه :
اینطوری تورهای اون کشور رو میگیرم :
1 | $country ->tours |
اینطوری هم تورهای استانهای اون کشور رو ببینم :
1 | $country ->province->tours |
تو این حالت اگر یک تور درون یک کشور و یکی از استانهای اون کشور ثبت شده باشه ، یکبار درون تورهای اون کشور و یکبار درون تورهای استانهای اون کشور نمایش داده میشه
با groupBy هم نتونستم خروجی رو یونیک کنم
کدی که نوشتم :
1 2 3 | $country = AppTourlocation::where( 'slug' , '=' , $slug )->where( 'type' , '=' , 1)->with([ 'tours' , 'province.tours' => function ( $query ) { $query ->orderBy( 'tours.id' , 'DESC' )->groupBy( 'id' ); }])->first(); |