При запуске doctrine:mapping:import
i get error:
Неизвестный запрос типа базы данных, Doctrine \ DBAL \ Platforms \ MySqlPlatform может не поддерживать его.
Кажется, мне нужно установить use_native_enum
в true
как. Тем не менее, все сообщения о документации и блоге ссылаются на Symfony <1.4. Есть ли какие-нибудь решения в Symfony 2?
Для проектов Symfony 2 добавьте это в доктрину dbal configuration в app/config.yml
:
doctrine: dbal: mapping_types: enum: string
Моя полная конфигурация доктрины выглядит так:
# Doctrine Configuration doctrine: dbal: driver: %database_driver% host: %database_host% port: %database_port% dbname: %database_name% user: %database_user% password: %database_password% charset: UTF8 mapping_types: enum: string set: string varbinary: string tinyblob: text orm: auto_generate_proxy_classes: %kernel.debug% auto_mapping: true
Код, адаптированный отсюда
Затем выполните:
app/console doctrine:schema:update --force --dump-sql --ansi
Рассмотрение кулинарной книги Doctrine дает лишь частичные ответы на вопрос о том, как сделать перечисления интерпретируемыми как строки, следующее должно работать независимо от того, как настроена Doctrine.
Ошибка указывает на имя файла: Doctrine\DBAL\Platforms\MySqlPlatform
.php – там вы увидите, что список по умолчанию встроен в функцию initializeDoctrineTypeMappings
следующим образом:
$this->doctrineTypeMapping = array( 'tinyint' => 'boolean', 'smallint' => 'smallint', 'mediumint' => 'integer', 'int' => 'integer', (...)
Добавление простой поддержки перечисления для всех пользователей доктрины, независимо от остальной части настройки, просто достигается путем расширения списка с помощью:
'enum' => 'string'