仅当满足父模型的给定条件时,如何获得模型关系

时间:2019-06-10 11:32:58

标签: php laravel eloquent relationship

我有一个帖子模型,如果该频道是私有的,我只需要从用户所属的频道中获取帖子,否则就需要从所有频道中获取所有帖子。所有人都可以查看公共频道,每个帖子都属于一个频道

目前,从我拥有的代码中,我仅从用户已加入的私人渠道获取帖子。我也无法从公共渠道获取帖子。 $ 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);
                    }
                );
            });

我应该从用户所属的私人渠道中获取所有帖子,并从公共渠道中获取所有帖子

1 个答案:

答案 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

想法和想法