mysql - 如何在 Laravel 5.4 中根据用户 ID 排除某些行?

标签 mysql laravel eloquent laravel-5.4

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

关于mysql - 如何在 Laravel 5.4 中根据用户 ID 排除某些行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43477744/

相关文章:

php - laravel get 和 post 路由的区别

php - 定义图像存储位置的最佳实践

php - 优化页面充电时间(使用 Eloquent 请求)

php - 解释 Eloquent morph 很多参数

mysql - Sequelize 属于很多禁用相同的ID

php - 使用 "?|"运算符执行查询

mysql - 从终端打开 MySQL

Laravel 将数据透视表附加到具有多个值的表

PHP Laravel 表单接受日/小时输入并设置过期时间

mysql - 谷歌云 SQL 无响应