2017-05-12 1 views
1

여기 그때 내 쿼리 여기 Laravel Eloquent ORM 다 대다 관계는 다른 테이블과 조인 할 때 작동하지 않습니까?

$

입니다 이러한 테이블

table 1 => shops 
      ------------- 
      id | name 
table 2 => menus 
      ------- 
      id | name | category_id 

table 3 (pivot table) => menu_shop 
         --------- 
         id | menu_id | shop_id 
table 4 => categories 
      ---------- 
      id | name 
내가 특정 카테고리 이름을 가진 메뉴와 상점을 얻고 싶은

이 메뉴 = 메뉴 :: ('상점')와 - ('categories.name', '=', 'Chinese') -> take (6) -> leftJoin ('categories', 'menus.category_id', '=', 'categories.id') - > get(); 난 단지 카테고리 테이블에 가입 한 후 {{$ 샵 모어> 이름}}에서 하나의 가게를 얻을 제외하고

는 내가

@foreach($menus as $chinesemenu) 

        <div class="col-md-6 col-sm-12"> 

         <div class="menu"> 
          <img src="{{ '/images/menus/'. $chinesemenu->image }}" class="menuimg"> 
          <p class="menutitle">{{$chinesemenu->title}} - <span class="menuprice">{{$chinesemenu->price}} Ks</span> 
           <a data-id="{{$chinesemenu->id}}" data-name="{{$chinesemenu->title}}" data-toggle="modal" data-target="#modalEdit" class="homeorder" ><i class="mdi mdi-cart"></i> </a> 
          </p> 
          <p class='menudescription'> 
           {{$chinesemenu->description}} 

          </p> 
          <span class="menushop"> 
            @foreach($chinesemenu->shops as $shop) 
            {{$shop->name}} 
            @endforeach 
           </span> 
         </div> 

        </div> 
       @endforeach 

모든 것이 괜찮 블레이드에 표시하지만이 개 가게가 있습니다.

하지만이

$menus =Menu::with('shops')->take(6)->get(); 

에 쿼리를 변경할 때 오른쪽 출력을 얻었다. 하지만 카테고리 테이블에 가입해야합니다. 도움!

답변

2

만들기

$menus = Menu::with('shops', 'category')->whereHas('category', function ($query) { 
    return $query->where('name', '=', 'Chinese'); 
})->take(6)->get(); 

같은 쿼리 그리고 당신은 지금 당신이 "중국어"라는 카테고리 만 메뉴를 얻어야한다

public function category() 
{ 
    return $this->belongsTo(Category::class) 
} 

메뉴

의 관계가 필요합니다. :)

Laravel docs

+0

내가 바로 출력을 가지고 @Patryk 감사합니다. –

+0

시원하고 문제 없습니다. –