关联查询怎么做到关联ModelB不存在条件数据则ModelA同时不反回这条数据?
$playServices = PlayService::with('play_user:id,sex')
->whereHas('play_user', function (Builder $query) use ($request, $sex) {
$query->when($request->has('sex'), function ($query) use ($sex) {
$query->where('sex', intval($sex));
});
})
->simplePaginate(30);
PlayService 属于 PlayUser
现在是以PlayService为主查询,play_user中数据不存在时最终的结果返回为
"data": [
{
"field" : "xxxx",
"play_user": null
}
],
怎么做到当play_user不存在数据时这一整条数据都被过滤掉?类似与DB的关联查询。
已解决,whereHas经过测试并没有实现。
解决方案使用rightJoin以play_user为主表查询
PlayService::rightJoin('play_users', 'play_services.play_user_id', '=', 'play_users.id')
->when($request->has('sex'), function ($query) use ($sex) {
$query->where('play_users.sex', intval($sex));
})
推荐文章: