繁体   English   中英

Laravel选择数据库原始组

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM