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',
),
),
),
),
));
試していませんが、これでもいいらしいです。