我有两个具有 OneToMany 关系的实体Entity1和Entity2 ,但它们存在于两个 MySQL 数据库中。
如何在 Symfony 中实现这些实体及其关系?
是否可以创建两个单独的捆绑包来实现这些实体?
我有两个具有 OneToMany 关系的实体Entity1和Entity2 ,但它们存在于两个 MySQL 数据库中。
如何在 Symfony 中实现这些实体及其关系?
是否可以创建两个单独的捆绑包来实现这些实体?
在 Doctrine 中,跨数据库连接数据在技术上不受设计功能的“支持”,但您可以通过稍微欺骗 Doctrine 使其工作。
如果要在实体之间建立关系,那么它们必须使用相同的连接:相同的数据库。
让多个数据库工作的关键是在您的实体类中,您需要指定实体的表名,并带有表所属数据库名称的前缀。下面是一个使用注解的例子:
<?php
namespace Demo\UserBundle\Entity;
use DoctrineORMMapping as ORM;
/**
* Demo\UserBundle\Entity\User
*
* @ORMTable(name="users.User")
*/
class User implements
{
/* ... */
}
和
<?php
namespace Demo\PostBundle\Entity;
use DoctrineORMMapping as ORM;
/**
* Demo\PostBundle\Entity\Post
*
* @ORMTable(name="posts.Post")
*/
class Post implements
{
/* ... */
}
和关系表:
<?php
namespace Demo\PostBundle\Entity;
use DoctrineORMMapping as ORM;
/**
* Demo\PostBundle\Entity\Post
*
* @ORMTable(name="posts.Post")
*/
class Post implements
{
/**
* @ORM\ManyToOne(targetEntity="\Demo\UserBundle\Entity\User")
**/
private $user;
/* ... */
/**
* Set user
*
* @param \Demo\UserBundle\Entity\Site $site
* @return Post
*/
public function setUser($user)
{
$this->user = $user;
return $this;
}
/**
* Get user
*
* @return \Demo\UserBundle\Entity\Site
*/
public function getUser()
{
return $this->user;
}
}
这里有一篇关于它的文章。
希望这有帮助