I'm using Laravel and have a query that selects using DB::raw()
SUM()
of a column:
DB::raw("SUM(points) as game_points")
I have installed mysqldn and AFAIK Laravel uses PDO
.
But game_points
is a string, no matter what type of the column is. (It's an integer column)
Also if I do:
DB::raw("COUNT(id) as foo_bar")
foo_bar
is returned as an integer.
SUM returns data type INTEGER for an expression with data type INT, SMALLINT, or TINYINT. SUM returns data type BIGINT for an expression with data type BIGINT. SUM returns data type DOUBLE for an expression with data type DOUBLE. For all other numeric data types, SUM returns data type NUMERIC.
We mostly required to get sum of amount, salary etc in laravel. We can also get sum of column using mysql SUM(). We have two way to get sum of column value. first we can use laravel sum() of query builder and another one we can use with directly with select statement using DB::raw().
It's neither Laravel or PDO issue.
According to the manual, SUM()
returns a DECIMAL
value for exact-value arguments (integer
or DECIMAL
). And the only way to represent DECIMAL
type in PHP is string, for two reasons:
due to these precautions the returned value is a string and you are supposed to convert it manually according to the expecting value - either using standard PHP type casting or using some dedicated math functions such as bcmath.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With