Обходной путь Doctrine2 для отображения типа данных MySql 'bit' - PullRequest
16 голосов
/ 17 марта 2012

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

Запрошен бит неизвестного типа базы данных, Doctrine \ DBAL \ Platforms \ MySqlPlatform может не поддерживать его.

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

Ответы [ 4 ]

31 голосов
/ 22 мая 2014

Использовать 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
10 голосов
/ 22 июля 2013

Если вы используете столбец BIT для хранения boolean, вы делаете это:

// get currently used platform
$dbPlatform = $em->getConnection()->getDatabasePlatform();

// interpret BIT as boolean
$dbPlatform->registerDoctrineTypeMapping('bit', 'boolean');

Теперь каждый раз, когда вы отображаете свойство в битовый столбец, доктрина 2 будет интерпретировать его значение как логическое значение.

6 голосов
/ 17 марта 2012

Вы можете создать свой собственный тип для Doctrine.

  1. Создайте новый тип, расширив класс Doctrine\DBAL\Types\Type.
  2. Переопределить convertToPHPValue() и convertToDatabaseValue() методы.
  3. Зарегистрировать новый тип:

    \Doctrine\DBAL\Types\Type::addType('abc', 'Your\\Custom\\Type\\AbcType');
    
    $dbPlatform = $em->getConnection()->getDatabasePlatform();
    $dbPlatform->registerDoctrineTypeMapping('abc', 'abc');
    

Подробнее на страницах документации Doctrine 1018 *

1 голос
/ 29 мая 2019

Чтобы решить эту проблему, выполните следующие действия:

1) открыть файл в следующем месте, как в сценарии Linux, путь:

вар \ WWW \ HTML \ админ \ библиотеки \ Composer \ поставщика \ доктриной \ DBAL \ Lib \ Doctrine \ DBAL \ Platforms \ MySqlPlatform.php

2) Перейти к этой функции initializeDoctrineTypeMappings ()

3) Нет, просто добавьте запись вашего отображения, как в моем случае, я отобразил бит с логическим значением, как указано ниже:

'bit' => 'boolean',

4) Перезагрузите приложение, и оно заработает.

...