У меня есть две сущности Entity1 и Entity2 с отношением OneToMany, но они находятся в двух базах данных MySQL.
Как я могу реализовать эти объекты с их отношением в Symfony?
Можно ли создать два отдельных пакета для реализации этих объектов?
У меня есть две сущности Entity1 и Entity2 с отношением OneToMany, но они находятся в двух базах данных 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;
}
}
Вот статья об этом.
Надеюсь, это поможет
%db_name_1%
надеюсь, что это поможет
- person Matteo; 19.04.2016