Подтвердить что ты не робот

Уход Doctrine2 для отображения типа данных "бит" в MySql

У меня есть несколько столбцов в моей схеме базы данных с битовыми типами данных, и у меня проблемы с Doctrine2. Я продолжаю получать:

Unknown database type bit requested, Doctrine\DBAL\Platforms\MySqlPlatform may not support it.

Есть ли какая-нибудь работа? Я думал просто изменить тип данных на логическое и просто использовать истинные и ложные инструкции, но это означало бы изменение схемы в больших масштабах, на которые у меня нет времени.

4b9b3361

Ответ 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 будет интерпретировать его значение как логическое.