这里我有这些表
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
我想获得具有特定类别名称的菜单和商店,然后我的查询就在这里
$ menus = Menu :: with(' shops') - > leftJoin(' categories',' menus.category_id',' = #&39;,' categories.id') - 化合物其中(' categories.name',' =''中国') - >取(6) - >得到();
然后我在刀片中显示
@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
一切都很好,除了我在加入类别表后只从{{$ shop-&gt; name}}获得一个商店,但它有两个商店。
但是当我将查询更改为此
时$menus =Menu::with('shops')->take(6)->get();
我得到了正确的输出。但我必须加入类别表。帮助!
答案 0 :(得分: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)
}
现在你应该只获得名为“Chinese”的菜单。 :)