Intereting Posts
CakePHP: не удается получить доступ к базе данных MySQL PHP Скрыть идентификатор от показа в URL-адресе href Кнопка отправки формы формы Yii, показывающая ошибку Какова концепция Service Container в Laravel? Как установить первый день недели в понедельник при использовании Week (Date) в PHP / MySQL? Как преобразовать десятичный $ attribute ; во фракцию в opencart Неизвестный модификатор '/' in …? что это? Печать переменной только тогда, когда она изменяется? PHP EOF показывает только один результат из цикла PHP ограничение на количество вывода, разрешенное до перенаправления местоположения заголовка, отклонено Разделить массив на более мелкие массивы на основе значения ключа? Используйте .htaccess, чтобы предотвратить доступ к корневому каталогу из открытого доступа Создание динамических ссылок с PHP / MySQL Ошибка Symfony CreateProcess CakePHP RequestHandler возвращает RSS / JSON вместо HTML

Как включить ENUM в Symfony 2 / Doctrine

При запуске 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'