2012-11-12 4 views
0

Le problème est que j'ai 2 + bases de données définies dans Symfony. Et quand je met à jour le schéma de table avecSymfony2 bases de données multiples, spécifier la base de données pour chaque table

php app/console dotrine:schema:update --force 

il fait les tables dans la base de données par défaut. Je voudrais spécifier à quelle base de données la table appartient. Comment pourrais-je faire ça?

J'utilise le format YAML (yml) pour les entités, par exemple:

Test\ExampleBundle\Entity\TestTable: 
    type: entity 
    table: test_table 
    id: 
     id: 
      type: integer 
      generator: 
       strategy: AUTO 
    fields: 
     name: 
      type: string 
      length: 255 
     sound: 
      type: smallint 
+0

Ceci des docs pourrait aider - http://symfony.com/doc/current/cookbook/doctrine/multiple_entity_managers.html – qooplmao

Répondre

4

un regard plus profond à la section How to work with Multiple Entity Managers and Connections de la documentation.

Doctrine vous offre la possibilité d'avoir plusieurs connexions. Vous pouvez facilement ajouter des gestionnaires d'entités pour lier vos entités à différentes connexions prédéfinies en fonction des groupes auxquels elles appartiennent.

Selon la documentation, vous pouvez lier des paquets aux gestionnaires d'entités, mais voici Une astuce sur la façon d'utiliser deux gestionnaires d'entités dans le même faisceau,

Si vous voulez lier des entités d'un paquet à différents gestionnaires d'entités, vous pouvez ajouter un attribut "dir" pour définir un chemin vers un dossier d'entités spécifique.

Exemple,

entity_managers: 
     default: 
      connection:  default 
      mappings: 
       MyBundle: 
        dir:  Path/To/EntityFolder1 
     myManager: 
      connection:  myConnection 
      mappings: 
       MyBundle: 
        dir:  Path/To/EntityFolder2 

Vous pouvez ensuite mettre vos entités paquet dans les bons dossiers en fonction de la connexion, ils sont liés à.

+0

J'ai essayé ceci, mais les documents que vous m'avez lié sont la version 1.2 et j'utilise 2.0 et cela ne fonctionne pas. – n00b

+0

Que diriez-vous si j'ai 2 bases de données différentes pour 1 paquet? Et il doit savoir quelle table appartient à quelle base de données. – n00b

+0

Ah merci, j'ai mis à jour ma réponse. Je ne pense pas que vous pouvez utiliser deux gestionnaires d'entités dans un seul paquet, sinon vous pouvez avoir des bundles séparés pour vos entités. –

Questions connexes