bundle如何为Doctrine ORM提供新的列类型?

时间:2014-08-22 10:06:06

标签: php symfony doctrine-orm

我想在一个包中提供自定义(doctrine orm)列类型,但我不知道如何注册它们:

Type::addType('my_col', 'MyColType');
$em->getConnection()->getDatabasePlatform()
   ->registerDoctrineTypeMapping('my_col', 'my_col');

MyBundleClass :: boot()看起来像个好地方,但在boot()内部,我无法访问容器。

谢谢。

1 个答案:

答案 0 :(得分:1)

您可以使用Bundle类的属性container来检索正确的实体管理器(通常是doctrine.orm.default_entity_manager

use Symfony\Component\HttpKernel\Bundle\Bundle;
use Doctrine\ORM\EntityManager;

class AcmeMyBundle extends Bundle
{
    /**
     * {@inheritdoc}
     */
    public function boot()
    {
        /* @var EntityManager $em */
        $em = $this->container->get('doctrine.orm.default_entity_manager');

        $em->getConnection()->getDatabasePlatform()->registerDoctrineTypeMapping(...);
    }