选择价格总和等于 1000 的所有行(以 laravel 为单位)



我想选择价格列总和为 1000 或以下的所有行。我怎样才能用拉拉维尔实现它?请建议。我是拉拉维尔的新手。

我的桌子只有 4 列

  1. id
  2. userid
  3. order_id
  4. 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();

顺便说一句,如果用户 iduser_id一样坚持 laravels 约定会更好,但那是另一种情况。

您应该能够轻松地将此请求分组到 userid,而不是order_id如果这是您的意图。

归功于巴特的回答

$orders = DB::table('orders')
->where('price','<=',1000)
->select(
DB::raw(
'col1,
col2,
col3,
sum AS "price_total"')
)
->get();

最新更新