2

У меня есть два объекта Entity1 и entity2 с OneToMany отношения, но они живут в двух базах данных MySQL.Symfony и Doctrine: перекрестные отношения базы данных

Как я могу реализовать эти сущности с их отношением в Symfony?

Возможно ли создать два отдельных пакета, где реализовать эти объекты?

ответ

1

В Доктрине объединение данных через базы данных технически не поддерживается конструктивной функцией, но вы можете заставить ее работать, обмакнув 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; 
    } 
} 

Here статью об этом.

Надеюсь, эта помощь

+0

Grazie! Могу ли я установить эту строку имени базы данных в качестве параметра конфигурации? Чао! – ShinDarth

+0

привет @ShinDarth с аннотацией доктрины Я думаю, что невозможно вставить параметры, но вы можете попробовать с аннотацией xml и поставить параметры с '% db_name_1%' надеюсь, что эта помощь – Matteo

+0

привет @ShinDarth вы пробовали мои решения? Работает? – Matteo

Смежные вопросы