Laravel Eloquent总和抛出错误

时间:2016-08-03 12:01:35

标签: php postgresql laravel eloquent

我只想简单地总结一下。 我用过这段代码

$money = Income::sum('money');

也累了这个

$money = Income::select(DB::raw('sum(money)'))->get();

但它正在抛出错误。我正在使用postgresql作为我的数据库。 错误讯息:

SQLSTATE[42883]: Undefined function: 7 ERROR: function sum(character varying) does not exist
LINE 1: select sum("money") as aggregate from "incomes"
^
HINT: No function matches the given name and argument types. You might need to add explicit type casts. (SQL: select sum("money") as aggregate from "incomes")

我的桌子:

incomes

+----+---------+-------+
| id | orderid | money |
+----+---------+-------+
|  1 |    2343 |    23 |
|  2 |    2344 |    55 |
+----+---------+-------+

2 个答案:

答案 0 :(得分:2)

根据您的错误消息,sum方法不会接收varchar(字符变化)。听起来money列不是数字数据类型(尽管它只包含数值。

要解决此问题,请将值转换为数字数据类型:

Income::select(DB::raw('sum(cast(money as double precision))'))->get()

请注意,这不一定是高效的。您可以考虑更改数据库架构(如果可能)以将货币存储为整数和数据库中的分数。也就是说,数据库中的1000将反映10.00美元。

答案 1 :(得分:-1)

您可以使用此

获得总和
$money = DB::table('incomes')->sum('money');

点击此链接https://laravel.com/docs/5.0/queries