我希望获得公共时间表,我可以访问所有公开帖子并获取所有帖子的朋友(即可能是公开的还是私人的)。如何在一个条件下管理它,我可以获得所有人的公开帖子和朋友的私人帖子。以下代码仅适用于公开视频。
$friends = json_decode($this->friend->where('user', $this->currentUser->id)->first()->list, true);
$blockedUserArray = $this->getBlockedList();
$friends[] = $this->currentUser->id;
$videos = $this->video
->withCount('videoComment', 'videoLike')
->where('privacy', 'EVERYONE')
->orWhereIn('user', $friends)
->whereNotIn('user', $blockedUserArray)
->latest()
->paginate($this->videoPaginate);
我可以用两个查询来完成它,但它会在分页中产生影响。有没有办法在单个查询中执行此操作?
答案 0 :(得分:1)
您必须将这两个查询分组
->where('privacy', 'EVERYONE')
->orWhereIn('user', $friends)
到
->where($query, function($query) use ($friends) {
$query->where('privacy', 'EVERYONE')
->orWhereIn('user', $friends);
})