【问题标题】:Laravel get the posts which is not liked by the userLaravel 获取用户不喜欢的帖子
【发布时间】:2021-01-27 14:07:15
【问题描述】:

我在 mysql 中有 3 个表。 “用户”、“帖子”和“喜欢”。 “likes”表有 user_id 和 post_id。我可以通过 Laravel 中的这段代码获取某个用户喜欢的帖子:

$posts = Post::join('likes', function($join) use($userId) {
    $join->on('likes.user_id', '=', $userId);
    $join->on('likes.post_id', '=', 'posts.id'));
});
$posts->select('posts.*');

但我想要一个查询来获取该用户不喜欢的所有帖子。

【问题讨论】:

  • 你能附上你的模型吗?
  • @V-K 假设“Post”有一栏(id),“User”有一栏(id),“Like”有三栏(id、user_id、post_id)

标签: mysql laravel join


【解决方案1】:
$posts = Post::whereDoesntHave('likes', function (Builder $query) use($userId) {
              $query->where('user_id', $userId);
           });

如果您的模型中包含所有关系,则可以使用whereDoesntHave 函数。

【讨论】:

  • 只需 Post::whereDoesntHave... 不需要 query() 或未定义的常量 query 你在那里
  • 我知道,就用它吧,因为PHPStorm 很好用
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-07-27
  • 1970-01-01
  • 1970-01-01
  • 2011-08-06
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多