我有一个帖子模型,如果该频道是私有的,我只需要从用户所属的频道中获取帖子,否则就需要从所有频道中获取所有帖子。所有人都可以查看公共频道,每个帖子都属于一个频道
目前,从我拥有的代码中,我仅从用户已加入的私人渠道获取帖子。我也无法从公共渠道获取帖子。 $ this->对Post模型的模型引用
$this->model->whereHas('channel', function ($q) use ($user){
$q->where('is_hidden', false)
->where('is_private', false)
->whereHas('members', function ($q) use ($user){
$q->where('user_id', $user->id);
}
);
});
我应该从用户所属的私人渠道中获取所有帖子,并从公共渠道中获取所有帖子
答案 0 :(得分:1)
经过一些试验,我使用->where(function($query){})
$this->model->whereHas('channel', function ($q) use ($user){
$q->where('is_hidden', false)
->where(function ($q) use ($user){
$q->where('is_private', false)
->orWhere(function ($q) use ($user){
$q->where('is_private', true)
->whereHas('members', function ($q) use ($user){
$q->where('user_id', $user->id);
});
});
});
});
来自Eloquent nested WHERE statement的想法和想法