Doctrine 自定义数据类型

发布于 2024-10-14 21:51:43 字数 547 浏览 8 评论 0 原文

我正在使用 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 数据库导入映射。

I'm developing application with Symfony2. Symfony2 is using Doctrine 2 for DBAL and ORM. As far as I know Doctrine2 doesn't have suport for BLOB data type. However I want to implement BLOB support through the custom data type mapping:

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

However I'm struggling to understand where should this part go.

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

Is anybody was going through it?

The reason I need a BLOB type is that I want to import mapping from existing MySQL database.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

厌味 2024-10-21 21:51:43

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

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

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

您可以在此 Symfony Cookbook 条目

Another solution would be to register your Custom Type in the config file

You just need to add that in your config file:

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

You can find more info on how to register a custom mapping type in this Symfony Cookbook entry

难得心□动 2024-10-21 21:51:43

根据之前答案中的链接,您只需将其添加到 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');
    }
}

According to the link in previous answer you can just add it to 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');
    }
}
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文