OK. Ho cercato di modificare il tuo post originale ma è in attesa di revisione da parte dei colleghi. Non sono sicuro di quanto ci vorrà. Provare a cambiare la vostra configurazione per:
doctrine:
dbal:
default_connection: default
connections:
default:
dbname: old_project
user: root
password: 123123
host: 1.1.1.1
port: 1
# Make an explicit connection just for clarity
old_project:
dbname: old_project
user: root
password: 123123
host: 1.1.1.1
port: 1
electra:
dbname: electra
user: root
password: 123123
host: 2.2.2.2
port: 2
orm:
# Humor me and add these
auto_generate_proxy_classes: %kernel.debug%
# auto_mapping: true
default_entity_manager: electra
entity_managers:
# Make an explicit old_project em so default does not confuse us
old_project:
connection: old_project
mappings:
XXDemoBundle: ~
electra:
connection: electra
mappings:
XXDemoBundle: ~
default:
connection: default
mappings:
XXDemoBundle: ~
Ora completamente soffiare via la cache solo per essere sicuri quindi eseguire:
php app/console doctrine:mapping:info --em electra
php app/console doctrine:mapping:info --em old_project
Si dovrebbe ottenere risultati identici. Ho provato questo sul mio sistema quindi sono abbastanza certo che se non lo fai, hai qualche errore di battitura da qualche parte.
Quindi le informazioni di mappatura stanno funzionando. Il passo successivo è verificare che entrambi i database corrispondano allo schema dell'entità. Quindi, fare questo:
php app/console doctrine:schema:update --em electra --dump-sql
php app/console doctrine:schema:update --em old_project --dump-sql
Né dovrebbe produrre alcuna uscita. Se lo fai, significa che il tuo database non corrisponde alle tue entità e che deve essere risolto (probabilmente usando l'opzione --force) prima che le query funzionino.
Una volta che i database sono in sincronia allora probabilmente si dovrebbe usare la dottrina: query: dql e fare una query di prova contro entrambi i manager. Quindi torna nel tuo codice.
=========================================
E ' è stato ora compreso che il vero obiettivo è avere due gestori di entità che puntano allo stesso insieme di entità ma in qualche modo indicare che ciascun gestore di entità dovrebbe limitarsi a un certo insieme di tali entità. E questo non è qualcosa che il S2 supporta fuori dalla scatola.
Si potrebbe guardare attraverso il manuale di Dottrina e vedere come gestisce i metadati entità e magari fare qualcosa con quel ma che potrebbe complicarsi.
L'unica cosa che davvero S2 offre è la possibilità di associare un gestore di entità a tutti i soggetti in uno o più fasci che utilizzano l'attributo di mappatura. Se si desidera condividere affermare tre delle sette entità da un pacchetto con un altro pacchetto, sarà sufficiente ricreare tali entità nel secondo pacchetto. Probabilmente estendendo la classe in modo da evitare la duplicazione del codice.
Penso che potresti voler alterare il tuo approccio un po '. Se si dispone di un insieme di entità principali condivise con più gruppi, inserirli nel proprio pacchetto. Ciascun seguito sul pacchetto può quindi aggiungere ulteriori entità.
Si prega di inviare un semplice esempio di ciò che si blocca. Entrambe le tue connessioni puntano allo stesso database? Sembra che dovresti anche avere auto_generate_proxy_classes lì e forse auto_mapping ma forse no. Prova "php app/console doctrine: mapping: info --em" con il primo e poi l'altro gestore di entità. – Cerad
Ciao! Uso due database diversi con due connessioni diverse. La mappatura: le informazioni dicono che non ho entità gestite dal gestore di entità predefinito, tutte le mie entità sono gestite da Elettra. – gabrielthorn
Ciò significa che hai un problema di configurazione da qualche parte. Per favore pubblica i tuoi mapping delle connessioni. doctrine: mapping: info dovrebbe restituire lo stesso elenco di entità per entrambi gli em. Assicurati di avere la riga auto_generate e che stai lavorando in modalità sviluppo. – Cerad