2016-03-17 7 views
2

Я использую Laravel и есть запрос, который выбирает с помощью DB::raw()SUM() колонки:Почему SUM (`column`) возвращает строку вместо целого?

DB::raw("SUM(points) as game_points")

я установил mysqldn и AFAIK Laravel использует PDO.

Но game_points - это строка, независимо от типа столбца. (Это целое столбец)

Кроме того, если я:

DB::raw("COUNT(id) as foo_bar")

foo_bar возвращается как целое число.

+0

Отметьте [этот вопрос] (http://stackoverflow.com/questions/1197005/how-to-get-numeric-types-from-mysql-using-pdo). – Vatev

ответ

4

Это не проблема с Laravel или PDO.

Согласно manual, SUM() возвращает значение DECIMAL для аргументов с точным значением (integer или DECIMAL). И единственным способом представления DECIMAL типа в PHP является строка.

-3

Вы могли бы попытаться преобразовать эту строку в целое число с помощью CONVERT(INT, game_points)

Согласно bugs.mysql.com, sum() возвращает NEWDECIMAL тип данных, что эквивалентно string в PHP, в то время как count() возвращает integer тип данных.

+1

Я знаю, что делать, чтобы конвертировать/отличать их от целых чисел. Я спрашиваю, почему это происходит. :) –

+0

извините, забыл про эту часть. Посмотреть мое редактирование :) – SEsti