Doctrine自定义数据类型

10

我正在使用Symfony2开发应用程序。Symfony2使用Doctrine 2进行关系映射和对象映射。据我所知,Doctrine2不支持BLOB数据类型。但是,我想通过自定义数据类型映射来实现BLOB支持:

http://www.doctrine-project.org/docs/dbal/2.0/en/reference/types.html

然而,我很难理解这部分代码应该放在哪里。

<?php
Type::addType('money', 'My\Project\Types\MoneyType');
$conn->getDatabasePlatform()->registerDoctrineTypeMapping('MyMoney', 'money');

有人经历过这个问题吗?

我需要使用BLOB类型是因为我想从现有的MySQL数据库中导入映射。


刚在这里回答了这个问题:http://stackoverflow.com/a/9133207/433927 - daSn0wie
2个回答

9

另一种解决方案是在配置文件中注册您的自定义类型。

只需在您的配置文件中添加以下内容:

# app/config/config.yml
doctrine:
    dbal:
        types:
            money:  My\Project\Types\MoneyType

您可以在Symfony Cookbook条目中找到有关如何注册自定义映射类型的更多信息。


4
根据之前答案中的链接,您只需将其添加到 src/My/Project/MyProjectBundle.php
use My\Project\Types\MoneyType;

class MyProject extends Bundle
{
    public function boot()
    {
        $em = $this->container->get('doctrine.orm.entity_manager');
        Type::addType('money', MoneyType::class);
        $em->getConnection()->getDatabasePlatform()->registerDoctrineTypeMapping('MyMoney','money');
    }
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接