如何在Laravel中做子查询

时间:2019-02-28 11:45:30

标签: laravel laravel-5

我已经看到很多关于如何使用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);

0 个答案:

没有答案