How to enable ENUMs in Symfony 2 / Doctrine

When running doctrine:mapping:import i get an error:

Unknown database type enum requested, Doctrine\DBAL\Platforms\MySqlPlatform may not support it.

It seems I need to set use_native_enum to true some how. However, all documentation and blog posts are refering to Symfony < 1.4. Is there any what would be the solution in Symfony 2?

Answers


For Symfony 2 projects, add this to the doctrine dbal configuration in app/config.yml:

doctrine:
    dbal:
        mapping_types: 
            enum:       string 

My full doctrine config looks like this:

# 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 adapted from here

Then run:

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


Considering the Doctrine cookbook only provides partial answers as to how to make enums interpret as strings, the following should work regardless of how Doctrine is configured.

The error points you at the name of the file: Doctrine\DBAL\Platforms\MySqlPlatform.php - in there, you'll find that the default list is embedded in the function initializeDoctrineTypeMappings as follows:

$this->doctrineTypeMapping = array(
            'tinyint'       => 'boolean',
            'smallint'      => 'smallint',
            'mediumint'     => 'integer',
            'int'           => 'integer',
            (...)

Adding simple enum support for all doctrine users, regardless of the rest of the setup, is simply achieved by extending the list with:

'enum' => 'string'

Need Your Help

npm behind a proxy fails with status 403

http node.js proxy npm

I'm trying to run npm behind a proxy. I've tried both entering the proxy directly or through Authoxy:

Rails: Validating existence of an association

ruby-on-rails

I have a Category and a Post model, with each Post belonging to a Category. Before creating or updating a post, I need to check that the category selected exists. What's the best way to validate ...