2
我有3个表获取对象的列表,只有当的hasMany关系具有元素
Shops - id, place_id, name...
Products - id, shop_id, name ...
Product_Tag - product_id, tag_id ... (pivot table)
Tags - id....
而且我想获得在阵列的结果是这样的:
array [
0 => [
"id" => 1,
"name" => "Shop name",
"products" => [...]
]
]
,但我想搜吧通过place_id和标签名称。类似这样的:
$shops = Shop::where('place_id', 1)
->with(array('products' => function($query)
{
$query->whereHas('tags', function ($query) {
$query->where('slug', 'tagname1');
});
}))->get();
这是行得通的。但是,如果没有任何商店产品具有该标签,我仍然会使用空产品数组获得Shop对象。如果在该商店中,至少有一种产品具有该标签,那么一切都可以。如果它有空的产品列表,我不想购物。此外,我认为这是开销foreach该数组和搜索空阵列,然后删除商店对象。有没有更好的方法不从数据库中获取?