在laravel中选择价格总和等于或1000的所有行

问题描述 投票:-3回答:2

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

我的表只有4列

  1. id
  2. userid
  3. order_id
  4. price

我需要使用traditional DB::table('orders')->select()... query (not using model)选择所有行,其中price列的总值为1000。

php mysql laravel
2个回答
1
投票

我知道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,如果这是您的意图。


0
投票

感谢巴特回答

$orders = DB::table('orders')
       ->where('price','<=',1000)
       ->select(
         DB::raw(
            'col1,
             col2,
             col3,
             sum AS "price_total"')
      )
      ->get();
© www.soinside.com 2019 - 2024. All rights reserved.