doctrine2がenumに対応していないので、既存のデータベースからEntityを作ろうとした時にエラーが出ることがあります。
$ php app/console doctrine:mapping:convert yml ./src/Test/HogeBundle/Resources/config/doctrine/metadata/orm --from-database --force [Doctrine\DBAL\DBALException] Unknown database type enum requested, Doctrine\DBAL\Platforms\MySqlPlatform may not support it.
その場合は、doctrine2のドキュメントによると、enumをstringに関連づければ良いようです。
Mysql Enums — Doctrine 2 ORM 2.1 documentation
BundleのbootでEntityManagerを取得して、マッピングを行います。
<?php namespace Test\HogeBundle; use Symfony\Component\HttpKernel\Bundle\Bundle; class TestHogeBundle extends Bundle { public function boot() { $em = $this->container->get('doctrine.orm.default_entity_manager'); $conn = $em->getConnection(); $conn->getDatabasePlatform()->registerDoctrineTypeMapping('enum', 'string'); } }
他の方法として、Enumタイプを作成して関連付けることもできるようです。
※追記
app/config/config.phpに書く方法が紹介されていました。
Doctrine の DBAL レイヤーの使用方法 | Symfony2日本語ドキュメント
$container->loadFromExtension('doctrine', array( 'dbal' => array( 'connections' => array( 'default' => array( 'mapping_types' => array( 'enum' => 'string', ), ), ), ), ));
試していませんが、これでもいいらしいです。