2017-11-03 15 views
0

すべての公開の投稿にアクセスし、すべての投稿を友だちにする公開タイムラインを取得したい(公開または非公開)ことができます。誰かのすべての公開投稿と友人の非公開投稿を取得できる1つの状態で、どのように管理できますか。下記のコードは公開動画のみを対象としています。Eloquent ORM、Laravelで条件ベースのクエリを実行する方法?

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

私は2つのクエリでそれを行うことができますが、ページングに影響します。 1つのクエリでそれを行う方法はありますか?

+0

短い答えを確認し、はい、長い答え

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

に関係が理にかなっている場合、それは:) – madalinivascu

+0

に依存します達成することができます。しかし、あなたはそれを見るためにもっと多くのデータを投稿する必要があります。 –

答えて

1

あなたがしなければならないグループこれらの二つのクエリ

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

文書にParameter Grouping

+0

上記のクエリはうまくいきましたが、データが少なかったので混乱しました。条件付きクエリのためのちょっとした方法 –

関連する問題