我需要搜索演示类型。
注意:为隐瞒简洁性,我还隐藏了其他搜索内容。
表格:
$user = (new User)->newQuery();
$user->with(['demos' =>function($query) {
$query->whereHas('genres', function ($query) {
$query->whereIn('genre_id',[2,3,4]);
});
}]);
$user->paginate();
注意:如果搜索结果中包含数据,则以上代码适用。但是,如果在数据透视表中找不到流派,则会返回空的demos数组。
问题:如何删除与提供的条件不匹配的结果(即:$query->whereIn('genre_id',[2,3,4]);
)。并显示符合条件的演示。
条件:
答案 0 :(得分:2)
我认为您需要only the users who has demos which has particular genres
$user->whereHas('demos', function($demoQuery) {
$demoQuery->whereHas('genres', function ($genreQuery) {
$genreQuery->whereIn('id',[2,3,4]);
});
})
->with([
'demos' => function($demoQuery) {
$demoQuery->whereHas('genres', function ($genreQuery) {
$genreQuery->whereIn('id',[2,3,4]);
});
])
->get();
where()
用于过滤,with()
用于加载演示。