Mysql 如何根据Laravel 5.4中的用户id排除某些行?
我有3个表格: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()->
帖子
,投票
和用户
。我想排除已经由当前用户投票的帖子(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