2016-06-10 84 views
5

我試圖創建一個使用ORM一個QueryBuilder的。但是我偶然發現一個實體與兩個可能的表有關係。有了這種結構,它將(恕我直言)不可能映射到實體本身。Doctrine DBAL可以與ORM查詢生成器混合使用嗎?

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

是否是可能的ORM的QueryBuilder,或將仍然使用ORM QueryBuilder的主要是在代碼的任何其它方式混合DBAL QueryBuilder的。

PS。我沒有設計數據庫和即時通訊只是優化它。對不起,這個:(

回答

5

不,它沒有任何意義,因爲後來ORM必須映射結果的對象。你不能在Main

地圖都ValBValC相同的屬性做是正確的,應該有Main臺單獨的字段分別ValBValC關係,即使它們具有相同的價值。這就像

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

您可以複製v_id列,然後做出適當的學說映射。

+0

是的,我知道解決方案,但有這個不訴諸到創建另一個表的方法嗎?因爲我們在生產,它非常繁瑣和危險地遷移到這個結構中。 – rrw

+1

我解決了你的問題。但不是。你可能只能在這裏和DBAL呆在一起。 –

+0

謝謝你的回答啓蒙我。我只是想,也許有一種方法來動態地映射實體。但我認爲沒有辦法。謝謝! :) – rrw

相關問題