2

Ich habe zwei Einheiten Entity1 und Entity2 mit einer OneToMany-Beziehung, aber sie leben in zwei MySQL-Datenbanken.Symfony and Doctrine: Cross-Datenbank-Beziehungen

Wie kann ich diese Entitäten mit ihrer Beziehung in Symfony implementieren?

Ist es möglich, zwei getrennte Bundles zu erstellen, in denen diese Entitäten implementiert werden sollen?

Antwort

1

In Doctrine wird das Verbinden von Daten zwischen Datenbanken technisch nicht von einer entworfenen Funktion "unterstützt", aber Sie können es schaffen, indem Sie Doctrine etwas tricksen.

Wenn Sie eine Beziehung zwischen Entitäten erstellen möchten, müssen sie dieselbe Verbindung verwenden: dieselbe Datenbank.

Der Schlüssel zu mehreren Datenbanken bekommen ist in Ihren Entitätsklassen zu arbeiten, müssen Sie die Tabellennamen des Unternehmens mit einem Präfix des Namen der Datenbank angeben, zu dem die Tabelle gehört. Hier ist ein Beispiel Anmerkungen mit:

<?php 
namespace Demo\UserBundle\Entity; 

use DoctrineORMMapping as ORM; 

/** 
* Demo\UserBundle\Entity\User 
* 
* @ORMTable(name="users.User") 
*/ 
class User implements 
{ 
    /* ... */ 
} 

und

<?php 
namespace Demo\PostBundle\Entity; 

use DoctrineORMMapping as ORM; 

/** 
* Demo\PostBundle\Entity\Post 
* 
* @ORMTable(name="posts.Post") 
*/ 
class Post implements 
{ 
    /* ... */ 
} 

und die Beziehungstabelle:

<?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 ein Artikel über sie.

Hoffe diese Hilfe

+0

Grazie! Und kann ich diese Datenbanknamen-Zeichenfolge als einen Konfigurationsparameter festlegen? Ciao! – ShinDarth

+0

hi @ShinDarth mit der Doktrin Annotation ich denke, ist nicht möglich, fügen Sie Parameter ein, aber Sie können versuchen, mit der XML-Annotation und setzen Sie einen Parameter mit% db_name_1% hoffe diese Hilfe – Matteo

+0

Hallo @ShinDarth haben Sie meine Lösungen versucht? Funktioniert es? – Matteo

Verwandte Themen