仅在满足父模型的给定条件时如何获取模型关系
Posted
技术标签:
【中文标题】仅在满足父模型的给定条件时如何获取模型关系【英文标题】:How to get a model relationship only if a given condition on parent model is met 【发布时间】:2019-10-24 19:20:45 【问题描述】:我有一个帖子模型,如果频道是私有的,我只需要从用户所属的频道获取帖子,或者从所有频道获取所有帖子。公共频道所有人都可以查看,每个帖子都属于一个频道
目前,根据我拥有的代码,我仅从用户加入的私人频道获取帖子。我也无法从公共渠道获取帖子。 $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】:我在使用->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得到和想法
【讨论】:
以上是关于仅在满足父模型的给定条件时如何获取模型关系的主要内容,如果未能解决你的问题,请参考以下文章