我想选择价格列总和为1000或以下的所有行。我怎样才能用Laravel实现它?请建议。我是laravel的新手。
我的表只有4列
id
userid
order_id
price
我需要使用traditional DB::table('orders')->select()... query (not using model)
选择所有行,其中price列的总值为1000。
我知道OP要求RAW SQL语句,但是因为使用Laravel,获得这些订单的最佳方式是利用Laravels Eloquent引擎,如下所示:
$orders = Orders::select(userid, order_id, DB::raw('SUM(price) as price_total'))
->groupBy('order_id')
->havingRaw('SUM(price) <= ?',[1000])
->get();
顺便说一下,如果userid坚持像user_id这样的laravels惯例会更好,但那是另一种情况。
您应该能够轻松地将此请求分组到userid,而不是order_id
,如果这是您的意图。
感谢巴特回答
$orders = DB::table('orders')
->where('price','<=',1000)
->select(
DB::raw(
'col1,
col2,
col3,
sum AS "price_total"')
)
->get();