2016-06-10 70 views
5

Sto provando a creare un querybuilder usando ORM. Ma inciampo su un campo su un'entità con una relazione a 2 possibili tabelle. Con questa struttura sarebbe (IMHO) impossibile mapparla nell'entità stessa.Doctrine DBAL può essere mescolato con ORM Query Builder?

╔═══════╗  ╔═══════╗  ╔═══════╗ 
║ ValB ║  ║ Main ║  ║ ValC ║ 
╠══╦════╣  ╠══╦════╣  ╠══╦════╣ 
║ *║ pk ║-- + ║ *║ pk ║ +---║ *║ pk ║ 
╠══╬════╣ | ╠══╬════╣ | ╠══╬════╣ 
║ ║ ║ +--║ ║v_id║---+ ║ ║ ║ 
╠══╬════╣  ╠══╬════╣  ╠══╬════╣ 
║ ║ ║  ║ ║ ║  ║ ║ ║ 
╚══╩════╝  ╚══╩════╝  ╚══╩════╝ 

IS è possibile mescolare DBAL QueryBuilder con ORM QueryBuilder, o in qualsiasi altro modo che sarà ancora l'ORM QueryBuilder principalmente sul codice.

PS. Non ho progettato il db e sto semplicemente ottimizzandolo. dispiace per questo :(

risposta

5

No, non ha senso, perché più tardi ORM devono mappare i risultati agli oggetti. Non è possibile mappare sia ValB e ValC alla stessa proprietà in Main

Per farlo correttamente , ci dovrebbe essere campi separati in Main tavolo per ValB e ValC rapporti. Anche se hanno lo stesso valore. Ti piace questa

╔═══════╗  ╔════════╗  ╔═══════╗ 
║ ValB ║  ║ Main ║  ║ ValC ║ 
╠══╦════╣  ╠══╦═════╣  ╠══╦════╣ 
║ *║ pk ║-- + ║ *║ pk ║ +---║ *║ pk ║ 
╠══╬════╣ | ╠══╬═════╣ | ╠══╬════╣ 
║ ║ ║ +--║ ║vB_id║ | ║ ║ ║ 
╠══╬════╣  ╠══╬═════╣ | ╠══╬════╣ 
║ ║ ║  ║ ║vC_id║---+ ║ ║ ║ 
╚══╩════╝  ╚══╩═════╝  ╚══╩════╝ 

è possibile copiare v_id colonna e poi fare una corretta mappatura in Dottrina.

+0

Sì, sono a conoscenza di questa soluzione, ma esiste un modo per non ricorrere alla creazione di un altro tavolo? perché siamo in produzione e è molto noioso e pericoloso migrare in questa struttura .. – rrw

+1

Ho capito il tuo problema. Ma no. Probabilmente dovrai rimanere con DBAL solo qui. –

+0

grazie della tua risposta mi ha illuminato. Stavo solo pensando che forse c'è un modo per mappare dinamicamente l'entità. Ma penso che non ci sia modo. Grazie! :) – rrw