我想选择价格列总和为 1000 或以下的所有行。我怎样才能用拉拉维尔实现它?请建议。我是拉拉维尔的新手。
我的桌子只有 4 列
id
userid
order_id
price
我需要使用traditional DB::table('orders')->select()... query (not using model)
选择所有行,其中价格列的总值为 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();
顺便说一句,如果用户 id像user_id一样坚持 laravels 约定会更好,但那是另一种情况。
您应该能够轻松地将此请求分组到 userid,而不是order_id
如果这是您的意图。
归功于巴特的回答
$orders = DB::table('orders')
->where('price','<=',1000)
->select(
DB::raw(
'col1,
col2,
col3,
sum AS "price_total"')
)
->get();