@Virtus_pro
PHP программист

Как получить корректный тип данных из MYSQL в Laravel?

Здравствуйте.
Работаю с Laravel 5.6

В базе MYSQL имеются колонки типа int
Но когда я получаю любым способом данные из бд, будь это модели или прямой запрос
мне всегда возвращаются все данные из базы в формате string и это очень затрудняет процесс разработки, так как приходится везде переводить вручную в Integer

Может настройки PDO какие то задать в подключении ?
  • Вопрос задан
  • 569 просмотров
Пригласить эксперта
Ответы на вопрос 4
@hakkol
Подобное обсуждал здесь. Проверьте, что у вас установлены нормальная версия php и mysql.
Ответ написан
@iljaGolubev
https://github.com/laravel/framework/blob/1eb1314d...

Если исправляю на true - получаю ID как строку.
PDO::ATTR_STRINGIFY_FETCHES => true,
PDO::ATTR_EMULATE_PREPARES => true,

Если используете чисто PDO попробуйте указывать эти опции.
Ответ написан
v_decadence
@v_decadence
Для моделей https://laravel.com/docs/5.6/eloquent-mutators#att...
Для обычных DB запросов и правда нужно что-то придумывать Почему pdo драйвер возвращает int как string?
Ответ написан
ThunderCat
@ThunderCat Куратор тега PHP
{PHP, MySql, HTML, JS, CSS} developer
На SO есть какое-то решение, но выглядит как что-то нестандартное, имхо проще в классе дб добавить при возврате из селекта проверку на тип, и возвращать уже в готовом виде, что то типа:
if($row = $sql->fetch(PDO::FETCH_ASSOC) !== false){
       foreach($row as $k=>$v) {
            if(is_numeric($v)) $row[$k] = intval($v);
        }
}


Это тоже костыль, но хотя бы не придется в каждом запросе все оборачивать в проверки.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы