У меня есть три модели в следующих отношениях:
Tour.php
class Tour extends Model
{
public function category()
{
return $this->belongsTo('App\TourCategory', 'category_id');
}
public function region()
{
return $this->belongsTo('App\Region');
}
}
TourCategory.php
class TourCategory extends Model
{
public function tours()
{
return $this->hasMany('App\Tour', 'category_id');
}
}
Region.php
class Region extends Model
{
public function tours()
{
return $this->hasMany('App\Tour');
}
}
Я пытаюсь получить все туры с определенной категорией туров из каждого региона.
Например Получить все пешеходные экскурсии из региона Скалистых гор, Йеллоустоун, Йосемити
Я попробовал следующий код:
public function trekRegions( View $view)
{
$category = TourCategory::where('slug','=','hiking')->first();
$tours = $category->tours()->with('region')->get(['region_id']);
$regions = $tours->pluck('region')->unique();
$view->with('tregions',$regions);
}
Я хочу напечататьвсе названия туров под названием региона в навигационной панели Mega Menu, но приведенный выше код позволяет мне печатать название региона, но также печатает и туры из других категорий.
Мой код в интерфейсе
@if(!empty($tregions)) @foreach($tregions as $region)
<div class="col-sm-3">
<strong class="title sub-link-opener">{{ $region->name }}</strong>
<ul class="header-link">
@foreach($region->tours as $tour)
<li>
<a href="{{ route('frontend-tourDetail',[$tour->slug]) }}">{{ $tour->title }}</a>
</li>
@endforeach
</ul>
</div>
@endforeach @endif