Как получить связанную модель Laravel связанной модели - PullRequest
0 голосов
/ 25 сентября 2019

Я делаю меню ресторана, где у каждого ресторана есть свои пункты меню, и эти пункты меню принадлежат к какой-либо категории (например, завтрак, обед ...)

Моя цель - посещать тот или иной ресторан.должны отображать категории, связанные с пунктами меню, в которых меню сгруппированы следующим образом.

  1. Завтрак
    • Чай и пирожные - 10
    • Кофе ихлеб - 15
  2. Обед
    • Рис с курицей - 45
    • Курица и чипсы - 30

Мои отношения таковы ...

1 В ресторане много меню |каждая Menu_Category имеет много меню

в моих моделях У меня есть

модель ресторана

public function menus()
{
    return $this->hasMany('App\Menu');
}

Модель меню

public function restaurant()
{
    return $this->belongsTo('App\Restaurant');
}


public function category_type()
{
    return $this->belongsTo('App\Category', 'category_id');
}

Модель категории

public function menus_type()
{
    return $this->hasMany('App\Menu','category_id');
}

Поэтому, когда я посещаю определенный ресторан, он должен отображать только категории, связанные с ресторанамипункты меню.

Ресторанный контроллер

public function show($slug, RestaurantRepository $repository)
{


    if(! $restaurant = $repository->get(['slug' => $slug], with(['cuisines','user', 'photos', 'thumbs', 'region', 'ratings.user']))) return abort('404');
    $p = 1;


    $categories = Category::with('menus_type')->get(); /* This is where I'm lost */

    return view('frontend.restaurant.show', compact('restaurant', 'p','categories'));
}

frontend.restaurant.show

@if($categories)
    <ul>
      @foreach($categories ?? [] as $cat_key=>$category)

          @if($category->id ===$restaurant->menus->id)
          <li>
              {{$category->name}}
              <ul>
                  @foreach($category->menus_type as $menu_key=>$menu)
                  <li>{{$menu->name}}</li> 
                  @endforeach
              </ul>
           </li>
          @endif

     @endforeach
    </ul>
@endif

Не работает!

1 Ответ

0 голосов
/ 25 сентября 2019

Сохраняйте это простым в RestaurantController.Найдите все связанные пункты меню и сгруппируйте их по категориям.Тем не менее, приведенные ниже коды не проверяются, вы можете попробовать.

$restaurant = Restaurant::findOrFail(1);
$categories = $restaurant->menus->groupBy('category_id');

Теперь извлеките их при просмотре файла

@foreach($categories as $key => $category)
    {{ Category::query()->find($key)->name }}
    <ul>
        @foreach($category as $menu)
            <li>{{ $menu->name }}</li>
        @endforeach
    </ul>
@endforeach
...