Symfony2 / Doctrine - 加入Mysql和Sqlite实体

时间:2012-01-09 23:14:07

标签: orm join symfony doctrine-orm relationships

我遇到Symfony2 / Doctrine的问题。

我开始认为我正在尝试做不可能的事情,通过关系将两个单独的数据库连接在一起。

  • 我有一个mysql数据库和一个sqlite数据库。
  • 我有2个捆绑(每个捆绑一个数据库)
  • 我有2x实体经理,映射正常。

我可以通过它自己的实体管理器访问每个数据库,每个捆绑包都可以访问其他捆绑包实体管理器,并且它在这方面都运行良好。

Sqlite数据库被锁定到另一个应用程序,我必须按原样使用它。我可以使用mysql数据库做我需要的任何事情。

  • 在sqlite数据库中,我有一个“项目”表
  • 在mysql数据库中,我有一个“任务”表。
  • 一个项目可以有很多任务。

我的tasks表有一个project_id字段,该字段填充了projects表中的ID。我正在尝试做的是使这种关系正常工作,这样我就可以使用树枝来做你在正常情况下通常可以用树枝做的事情。即打电话给 {{project.tasks}} {{tasks.projects}}

目前我在Project控制器中有一些代码,将Tasks传递给视图,反之亦然。这确实有效,但它非常麻烦。我真正想做的是让ORM映射在每个实体之间正常工作。

Doctrine / Symfony2能做到这一点,还是我想做不可能的事?

非常感谢任何协助。

这是我的config.yml文件的摘录。

orm:
        auto_generate_proxy_classes: %kernel.debug%
        default_entity_manager:   agile
        entity_managers:
            glue:
                connection:       glue
                mappings:
                    WebplaceGlueBundle: ~
            agile:
                connection:       agile
                mappings:
                    WebplaceAgileBundle: ~

1 个答案:

答案 0 :(得分:1)

我们在OpenSky上遇到类似的问题:我们有一些数据存储在MongoDB中,有些存储在MySQL中。我们使用stof的DoctrineExtensions包的扩展名:

https://github.com/opensky/DoctrineExtensionsBundle/tree/orm2odm_references_current

这允许我们在ODM和ORM之间添加@Gedmo\ReferenceOne注释。您可以直接在两个ORM连接之间使用它,但如果没有,它将为您提供处理不同持久层之间关系的起点......

/**
 * @Gedmo\ReferenceOne(
 *     type="document",
 *     class="MyBundle\Document\User",
 *     identifier="userId"
 * )
 */