2017-04-18 25 views
2

我有3個表格:posts,votesusers。我想排除已經被當前用戶投票的帖子(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