如何在Eloquent ORM,Laravel中进行基于条件的查询?

时间:2017-11-03 09:52:31

标签: php laravel eloquent

我希望获得公共时间表,我可以访问所有公开帖子并获取所有帖子的朋友(即可能是公开的还是私人的)。如何在一个条件下管理它,我可以获得所有人的公开帖子和朋友的私人帖子。以下代码仅适用于公开视频。

$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);

我可以用两个查询来完成它,但它会在分页中产生影响。有没有办法在单个查询中执行此操作?

1 个答案:

答案 0 :(得分:1)

您必须将这两个查询分组

->where('privacy', 'EVERYONE')
->orWhereIn('user', $friends)

->where($query, function($query) use ($friends) {
    $query->where('privacy', 'EVERYONE')
          ->orWhereIn('user', $friends);
})

检查文档Parameter Grouping