Connessione a più database in Doctrine2 e Zend framework

Attualmente sto lavorando a un'applicazione che è stata costruita usando ZF 1.11.3 – Doctrine2 è il componente ORM utilizzato. Ho bisogno di usare più database. All'interno del file application.ini, ho impostato le connessioni del database come segue:

resources.doctrine.dbal.connections.default.parameters.dbname = "db_name_one" resources.doctrine.dbal.connections.secondary.parameters.dbname = "db_name_two" 

Come dovrei associare le classi di entity framework; Doctrine2 in base alla seconda connessione di database con quella connessione: Ad esempio, se ho una class di entity framework; dalla seconda connessione come:

 /* * @Entity * @Table(name="tableOnSecondDatabase") */ Class EntityFromSecond { 

In che modo Doctrine2 / ZF sa quali classi di entity framework; sono mappate su un database? Grazie dell'aiuto.

Non sottolineo che è ansible associare un'entity framework; a una connessione specifica, non avrebbe senso nell'architettura di Doctrine 2.

Quello che puoi fare, d'altra parte è avere due EntityManager, ognuno con diverse opzioni di connessione. È necessario decidere nella propria logica aziendale, quale entity framework; viene gestita da quale gestore connessioni.

modifica Doctrine 2 non support i join di database incrociati nel senso di avere due connessioni distinte e di unirsi a loro, AFAIK. Non riesco nemless a immaginare come functionrebbe sul livello PHP PDO. Quello che Vijay ha suggerito per uno basato su Doctrine 1 e il secondo, non è esattamente il crossbord join, dato che Doctrine 1 esegue 2 query e unisce i risultati stessi, il che non è ottimale per le performance.

Quello che potreste fare, d'altra parte, è avere una connessione, che può accedere a entrambi i database (cioè se sono sullo stesso server DB), o agli schemi, se siete su Postgres e definire il vostro entity framework; in quanto tali:

 //defining first entity @Entity @Table(firstSchema.table_name) class MyEntity //defining second entity @Entity @Table(secondSchema.table_name) class SecondEntity 

Questo dovrebbe funzionare, credo

Se stai utilizzando due database diversi per la stessa applicazione e stanno servendo in modo indipendente diversi moduli nella tua applicazione, puoi fare un'iniezione a livello di plugin e scegliere la corretta connessione db in base alla richiesta.

Nel seguente link vengono gestiti più database utilizzando connessioni separate.

http://stuf.ro/using-multiple-databases-in-doctrine/

Se si ha un'associazione tra due database e si ha bisogno di recuperare i dati dopo aver unito le tabelle da due di questi database, è ansible creare una class entity framework; doctrine specificando dbName.tableName.columnName. Sarà un po 'complicato, ma per ulteriori riferimenti guarda al seguente link:

http://www.doctrine-project.org/blog/cross-database-joins