2017-04-18 7 views
2

私は3つのテーブル:posts,votesおよびusersを持っています。現在のユーザー(Auth :: user() - > id)によって既に投票された投稿を除外します。私はそれをどのように達成すべきですか?私はこのコードを試してみました:Laravel 5.4のユーザーIDに基づいて一部の行を除外する方法は?

$user_id = Auth::user()->id; 
     $posti = Post::with('user') 
     ->whereDoesntHave("votes") 
     ->whereBetween('posts.created_at', array(Carbon::now()->subHours(48), Carbon::now())) 
     ->orderBy('posts.created_at', 'DESC') 
     ->orderByVotes() 
     ->take(20) 
     ->get(); 
+0

これはあなたを与えるだろう、これは以下のコードを使用して達成するために投票なしの投稿ではない投稿を投票しているユーザーではありません。そのためには、ユーザーIDを使用して投票テーブルをチェックする条件を入力します。 – webDev

答えて

2

投稿が投票関係とコールバック関数を使用してログインしているユーザーからの投票を持っていない場合は、確認することができます。

$user_id = Auth::user()->id; 
Post::with('votes') 
    ->whereDoesntHave('votes', function ($query) use ($user_id) { 
     $query->where('user_id', $user_id); 
    }) 
    ->get(); 
0

あなたはまた、ログインしたユーザーが既に好きで投票かどうかをチェックするかの状態に関係を使用することができます:

$user = Auth::user()->id; 
@if($user->votes) 

@else 
関連する問題