Извлечение логических значений с помощью 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']
Но это даже не близко к идеальному решению.