我已经看到很多关于如何使用whereIn
进行子查询的示例,但是我需要使用where
进行子查询,例如:
select * from products
where (select count(*) from items
where items.product_id = products.id
and items.exported = 0) = 0;
我只是尝试了这段代码:
Product::where(function($q) {
$q->selectRaw('count(*)')
->from('items')
->whereRaw('items.product_id', 'products.id')
->where('items.exported', 0);
}, '=', 0);
在此解决方案中,结果查询如下所示:
select * from products
where (items.product_id and exported = 0);
由于某种原因,构建器失去了子查询。 我该怎么解决?
解决方案
Product::whereHas('products', function($q) {
$q->selectRaw('count(*)')
->from('items')
->whereRaw('items.product_id', 'products.id')
->where('items.exported', 0);
}, '=', 0);