我有两个实体Entity1和Entity2,它们具有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;
}
}
这是一篇关于它的文章。
希望这能帮助