PHP SUM()函数计算错误

时间:2017-06-28 08:10:11

标签: php eloquent

我正在使用超薄框架,我想做的是计算一定数量的特定用户..

这是我的表

load_up_id   user_id   amount
1            1         1000
2            1         1000
3            1         2000
4            2         3000
5            2         1000

我希望获得user_id的总金额。 1,但它不是4000,而是2000

这是我的代码

$loadups = $this->loadupPayment->where('user_id', $this->auth->user()->user_id)->get();

$total_loadup = $this->loadupPayment->select(db::raw('sum(amount) as total_loadup'))->groupBy('user_id')->get();

先谢谢你们! :d

2 个答案:

答案 0 :(得分:1)

所以你想要一个特定用户的ID?试试这个:

$total_loadup = $this->loadupPayment->select(db::raw('sum(amount) as total_loadup'))->where('user_id', $this->auth->user()->user_id)->get();

答案 1 :(得分:0)

我认为,不是按用户ID进行分组,而是需要在sum语句中将用户ID用作 CASE 。这实际上是SUM计算中的原因,因此您可以说当用户id是我想要的用户ID时(在这种情况下为1)添加值,如果不是忽略它。

尝试这样的事情

$total_loadup = $this->loadupPayment->select(db::raw('SUM(CASE WHEN user_id = 1 THEN amount ELSE 0 END) as total_loadup'))->get();

您可能希望在上面参数化用户ID值。

希望这有帮助!