Извлечение логических значений с помощью DBAL Doctrine в Symfony

Я использую DBAL в проекте Symfony для доступа к данным в базе данных Mysql. При запросе таблиц с логическими полями (созданными как tinyint) я получаю значения tinyint в PHP, но мне бы хотелось получить логические значения.

Каким-то образом я хотел бы получить то же отображение, что и при использовании Doctrine напрямую.

Я думал, что преобразование преобразования (из mysql в php) уже было реализовано в DBAL, но я не уверен, если это будет работать таким образом (этот уровень отображения значений обратно).

Я попытался зарегистрировать пользовательское сопоставление, как показано ниже, но безуспешно:

    $this->conn->getDatabasePlatform()->registerDoctrineTypeMapping('tinyint', 'boolean'); 

    $sql = "
    SELECT se.survey_id, se.anonymous
      FROM survey_edition se
    ";
    $stmt = $this->conn->prepare($sql);
    $stmt->execute();

    $result = $stmt->fetch();

В этом случае 'anonymous' - это поле tinyint(1) в Mysql, но я бы хотел, чтобы $result['anonymous'] был логическим, а не целым числом.

Знаете ли вы, можно ли получить логические значения в PHP из запроса Mysql через DBAL Doctrine?

Благодарю.

1 ответ

Решение

Без использования некоторых ORM вы не можете (насколько я знаю) определять типы моделей.

Способ решения этой проблемы - перебирать данные и приводить логические значения, такие как:

$item[$i]['foobar'] = (bool)$item[$i]['foobar']

Но это даже не близко к идеальному решению.

Другие вопросы по тегам