我正在使用 Laravel,并且有一个查询使用列的
DB::raw()
SUM()
进行选择:
DB::raw("SUM(points) as game_points")
我已经安装了 mysqldn 并且 AFAIK Laravel 使用
PDO
。
但是
game_points
是一个字符串,无论列是什么类型。 (这是一个整数列)
如果我这样做:
DB::raw("COUNT(id) as foo_bar")
foo_bar
以整数形式返回。
这既不是 Laravel 也不是 PDO 问题。
根据MySQL手册,
SUM()
返回精确值参数的DECIMAL
值(integer
或DECIMAL
)。在 PHP 中表示 DECIMAL
类型的唯一方法是 string,原因有两个:
由于这些预防措施,值以字符串形式返回,您应该根据期望值手动转换它 - 使用标准 PHP 类型转换或使用一些专用的数学函数,例如 bcmath。
您可以尝试使用
CONVERT(INT, game_points)
将该字符串转换为整数
sum()
返回NEWDECIMAL
数据类型,相当于php中的string
,而count()
返回integer
数据类型。