Symfony和Doctrine:跨数据库关系



我有两个实体Entity1Entity2,它们具有OneToMany关系,但它们位于两个MySQL数据库中。

我如何在Symfony中实现这些实体及其关系?

是否可以创建两个独立的捆绑包,在哪里实现这些实体?

在Doctrine中,跨数据库连接数据在技术上不受设计功能的"支持",但您可以通过稍微欺骗Doctrine来实现它。

若要在实体之间建立关系,则它们必须使用相同的连接:相同的数据库。

让多个数据库工作的关键是在实体类中,您需要指定实体的表名,并以表所属数据库的名称为前缀。下面是一个使用注释的示例:

<?php
namespace DemoUserBundleEntity;
use DoctrineORMMapping as ORM;
/**
 * DemoUserBundleEntityUser
 *
 * @ORMTable(name="users.User")
 */
class User implements
{
  /* ... */
}

<?php
namespace DemoPostBundleEntity;
use DoctrineORMMapping as ORM;
/**
 * DemoPostBundleEntityPost
 *
 * @ORMTable(name="posts.Post")
 */
class Post implements
{
  /* ... */
}

以及关系表:

<?php
namespace DemoPostBundleEntity;
use DoctrineORMMapping as ORM;
/**
 * DemoPostBundleEntityPost
 *
 * @ORMTable(name="posts.Post")
 */
class Post implements
{
    /**
     * @ORMManyToOne(targetEntity="DemoUserBundleEntityUser")
     **/
    private $user;
    /* ... */
    /**
     * Set user
     *
     * @param DemoUserBundleEntitySite $site
     * @return Post
     */
    public function setUser($user)
    {
        $this->user = $user;
        return $this;
    }
    /**
     * Get user
     *
     * @return DemoUserBundleEntitySite
     */
    public function getUser()
    {
        return $this->user;
    }
}

这是一篇关于它的文章。

希望这能帮助

相关内容

  • 没有找到相关文章