40 votes

Comment activer les ENUM dans Symfony 2 / Doctrine

Lorsque vous exécutez doctrine:mapping:import, je reçois une erreur :

Type de base de données inconnu ENUM demandé, Doctrine\DBAL\Platforms\ MySqlPlatformpeut ne pas le prendre en charge.

Il semble que je doive définir use_native_enum true un peu comment. Cependant, toute la documentation et les articles de blog font référence à Symfony < 1.4. Y a-t-il une solution dans Symfony 2 ?

125voto

PutzKipa Points 3103

Pour les projets Symfony 2, ajoutez ceci à la configuration de la doctrine dbal en app/config.yml :

doctrine:
    dbal:
        mapping_types: 
            enum:       string 

Ma configuration de doctrine complète ressemble à ceci :

# 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

Code adapté d'ici

Puis exécutez :

app/console doctrine:schema:update --force --dump-sql --ansi

7voto

Elnur Abdurrakhimov Points 23540

Je pense que vous trouverez une réponse à votre question dans l'article du livre de recettes MySQL Enums.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X