Уход Doctrine2 для отображения типа данных "бит" в MySql
У меня есть несколько столбцов в моей схеме базы данных с битовыми типами данных, и у меня проблемы с Doctrine2. Я продолжаю получать:
Unknown database type bit requested, Doctrine\DBAL\Platforms\MySqlPlatform may not support it.
Есть ли какая-нибудь работа? Я думал просто изменить тип данных на логическое и просто использовать истинные и ложные инструкции, но это означало бы изменение схемы в больших масштабах, на которые у меня нет времени.
Ответы
Ответ 1
Вы можете создать свой собственный настраиваемый тип для Doctrine.
- Создайте новый тип, расширив класс
Doctrine\DBAL\Types\Type
.
- Переопределить методы
convertToPHPValue()
и convertToDatabaseValue()
.
-
Зарегистрируйте новый тип:
\Doctrine\DBAL\Types\Type::addType('abc', 'Your\\Custom\\Type\\AbcType');
$dbPlatform = $em->getConnection()->getDatabasePlatform();
$dbPlatform->registerDoctrineTypeMapping('abc', 'abc');
Подробнее о Doctrine страницах документации
Ответ 2
Используйте параметры mapping_types в config.yml
doctrine:
dbal:
driver:%% database_driver
host:%% database_host
Port:%% database_port
dbname:% database_name%
user:%% database_user
password:%% database_password
charset: UTF8
mapping_types:
bit: boolean
Ответ 3
Если вы используете столбец BIT
для хранения boolean
, вы делаете это:
// get currently used platform
$dbPlatform = $em->getConnection()->getDatabasePlatform();
// interpret BIT as boolean
$dbPlatform->registerDoctrineTypeMapping('bit', 'boolean');
Теперь каждый раз, когда вы сопоставляете свойство с столбцом бит, доктрина 2 будет интерпретировать его значение как логическое.