Доктрина выбирает значение с плавающей точкой из базы данных без десятичного знака

Я создаю экземпляр Doctrince, как это

$dbalConfig = new \Doctrine\DBAL\Configuration();
$dbal = \Doctrine\DBAL\DriverManager::getConnection($dbalConn, $dbalConfig);

DbalConfig — это просто настройки соединения mysql + установка charset в utf-8

Когда я сейчас выполню запрос:

$sql = "SELECT price FROM products";
$stmt = $dbal->prepare($sql);
$stmt->execute();
$products = $stmt->fetchAll();

и сбросить результаты

var_dump($products);

Я получаю все значения, как это

[1]=>
array(1) {
["price"]=>
float(17)

Тем не менее, в базе данных значение сохраняется как число с плавающей запятой, как это 17.90

Что мне нужно, чтобы получить данные в правильном формате? Я не могу изменить тип столбца с плавающего на какой-либо другой в базе данных, потому что он не принадлежит мне. Можно ли как-то получить правильные значения?

2

Решение

Я исправил эту проблему. Проблема была в том, что я немецкий пользователь. Хе-хе, это не совсем проблема, но это как-то связано с этим.

Сайт, который я использую, имеет LC_NUMERIC установлен в de_DE.UTF-8, При изменении его на en_US.UTF-8 это работает без проблем.

setlocale(LC_NUMERIC , 'en_US.UTF-8');

Похоже, локализация была просто «неправильной».

Но! Разве нет способа конвертировать американский формат в немецкий? Потому что я не думаю, что это был бы правильный способ просто изменить LC_NUMERIC из-за данных, которые я получаю, верно? Это звучит как быстрое и грязное решение

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]