不存在查询
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();
有这个也可能对你有用
我的查询有问题。
在帖子 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();
有这个