Mysql 如何根据Laravel 5.4中的用户id排除某些行?

Mysql 如何根据Laravel 5.4中的用户id排除某些行?,mysql,laravel,eloquent,laravel-5.4,Mysql,Laravel,Eloquent,Laravel 5.4,我有3个表格:帖子,投票和用户。我想排除已经由当前用户投票的帖子(Auth::user()->id)。我应该如何做到这一点?我尝试使用以下代码: $user_id = Auth::user()->id; $posti = Post::with('user') ->whereDoesntHave("votes") ->whereBetween('posts.created_at', array(Carbon::now()->

我有3个表格:
帖子
投票
用户
。我想排除已经由当前用户投票的帖子(Auth::user()->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();

您可以使用投票关系和回调函数检查帖子是否没有登录用户的投票。要实现这一点,请使用以下代码:

$userId = Auth::user()->id;
Post::with('votes')
    ->whereDoesntHave('votes', function ($query) use ($userId) {
        $query->where('user_id', $userId);
    })
    ->get();
您还可以使用if条件中的关系来检查登录用户是否已投票或不喜欢:


这将为您提供没有任何投票权的帖子,而不是没有投票权的用户。因此,对于该放置条件,请使用用户id在投票表中检查。
$user = Auth::user()->id;
@if($user->votes)

@else