2017-05-12 2 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'、 '='、 'C​​hinese') - > take(6) - > leftJoin( 'categories'、 'menus.category_id'、 '='、 'categories.id') > get();私は唯一のカテゴリテーブルに参加した後、{{$ shop->名}}から一つだけの店を得る以外

はその後、私は、ブレードに表示

@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 

すべてがOKですが、それは2つの店舗を展開しています。

しかし、私はこの

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

にクエリを変更したときに、私は右の出力を得ました。しかし、私はcategoriesテーブルに加わる必要があります。助けて!

答えて

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

クール、問題ありません。 –

関連する問題