不存在查询

Doesn't exist query

我的查询有问题。

在帖子 table 中,我有 posts.id, 然后,在评论 table 中,我有 posts_id(外键 -> posts.id),reviews.id。 我想查询那些 posts_id 在评论 table(post_id).

中不存在的

我正在使用 laravel 查询生成器。 我正在尝试 ->

  $r = DB::table('reviews')
            ->select(DB::raw('count(id) as rev_count, posts_id'))
            ->groupBy('posts_id')
            ->get();
        foreach ($r as $rr)
        {
            $p = DB::table('posts')
                ->select('id')
                ->where('id', '!=', $rr->posts_id)
                ->get();
        }

我已经成功提取了值。但是太复杂了,可能有问题。 有没有直接查询提取出来的?

使用not exists,

怎么样

SQL查询:

select *
   from posts
  where not exists
    (select reviews.posts_id
       from reviews
      where reviews.posts_id = posts.id)

等效laravel查询:

DB::table('posts')
    ->select('id')
    ->whereNotExists(function ($query) {
        $query->select("reviews.posts_id")
              ->from('reviews')
              ->whereRaw('reviews.posts_id = posts.id');
    })
    ->get();

有这个也可能对你有用