[英]Laravel select db raw groupBy
我想在laravel中显示此查询:
SELECT products.*, (
SELECT COUNT(*)
FROM category
WHERE category.product_id = products.id
AND category.date_creation BETWEEN '2018-02-16 00:00:00' AND '2018-02-19 23:59:59'
GROUP BY product_id
)nbr
FROM products
我尝试与此:
$a= $date_du;
$b = $date_au;
$products = DB::table('products')
->leftjoin('category','category.product_id','=','products.id')
->select('products.*',
DB::raw("(SELECT COUNT(*) FROM category
WHERE category.product_id = products.id AND category.date_creation >= '$a' AND category.date_creation <= '$b' group by product_id) as nbr"))
->get();
但是子句分组依据不起作用。
试试这个
$products = DB::table('products')
->leftjoin('category','category.product_id','=','products.id')
->whereBetween('date_creation',[$a,$b])
->select(DB::raw('COUNT(*) as nbr'), 'products.*')
->groupBy('id')
->get();
这可能对您有用。
您也可以这样做:
$products=DB::select("SELECT products.*, ( SELECT COUNT(*) FROM category WHERE category.product_id = products.id AND category.date_creation BETWEEN '2018-02-16 00:00:00' AND '2018-02-19 23:59:59' GROUP BY product_id )nbr FROM products" );
这将运行原始查询并返回所需的输出。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.