10

我正在使用 Symfony2 开发应用程序。Symfony2 将 Doctrine 2 用于 DBAL 和 ORM。据我所知,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 数据库中导入映射。

4

2 回答 2

9

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

您只需将其添加到您的配置文件中:

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

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

于 2016-01-07T23:46:17.290 回答
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');
    }
}
于 2013-02-06T01:00:27.843 回答