如何在Symfony 2/Doctrine中启用ENUM

Roe*_*zen 38 php mysql doctrine symfony

运行时doctrine:mapping:import我得到一个错误:

请求未知的数据库类型枚举,Doctrine\DBAL\Platforms\MySqlPlatform可能不支持它.

看来我需要设置use_native_enumtrue一些如何.但是,所有文档和博客文章都引用了Symfony <1.4.在Symfony 2中有什么解决方案吗?

Put*_*ipa 119

对于Symfony 2项目,将其添加到doctrine dbal配置中app/config.yml:

doctrine:
    dbal:
        mapping_types: 
            enum:       string 
Run Code Online (Sandbox Code Playgroud)

我的完整学说配置如下所示:

# 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
Run Code Online (Sandbox Code Playgroud)

代码改编自此处

然后运行:

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

  • 是的,这有效,但问题是,当你执行"php app/console doctrine:schema:update --force"时,它会从数据库中删除所有枚举类型 (6认同)