在laravel中按列获取所有条目的总和

时间:2015-12-30 11:48:17

标签: php mysql laravel laravel-5

所以我有表prices的结构:

+----+--------+
| id | reward |
+----+--------+
| 1  | 721    |
+----+--------+
| 2  | 54     |
+----+--------+
| 3  | 99     |
+----+--------+

我正在使用这种方法来总结所有奖励:

'withdrawals' => \App\Tradeoffer::where('type', 'withdraw')
            ->where('completed', 1)
            ->where('declined', 0)
            ->where('timeout', 0)
            ->where('created_at', '>', (time() - $hours))
            ->sum('reward')

并且响应是:7215499而不是所有条目的总和。这是为什么?怎么处理呢?

3 个答案:

答案 0 :(得分:1)

我认为你可以这样做,

$totalReward = \App\Tradeoffer::selectRaw('SUM(reward) as total')
        ->where('type', 'withdraw')
        ->where('completed', 1)
        ->where('declined', 0)
        ->where('timeout', 0)
        ->where('created_at', '>', (time() - $hours))
        ->first();

$totalReward->total;

答案 1 :(得分:0)

您应该做的是确保数据库中reward表中的prices列是数字(整数/浮点数)而不是varchar

答案 2 :(得分:0)

我使用查询生成器而不是使用模型,它可以(使用我的数据库)

DB::table('Tradeoffer') // Here is the name of the table
    ->where('type', 'withdraw')
    ->where('completed', 1)
    ->where('declined', 0)
    ->where('timeout', 0)
    ->where('created_at', '>', (time() - $hours))
    ->sum('reward');

试试吧!