2016-06-10 76 views
5

ORM kullanarak bir sorgu oluşturucu oluşturmaya çalışıyorum. Ama ben 2 olası tablo ile bir ilişki üzerinde bir varlık üzerinde bir alanın üzerine tökezliyorum. Bu yapı ile (IMHO) varlığın kendi içinde haritalanması imkansız olurdu.Can Doctrine DBAL, ORM Query Builder ile karıştırılabilir mi?

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

mi orm querybuilder veya hala kod çoğunlukla ORM QueryBuilder kullanacağı başka bir şekilde birlikte DBal QueryBuilder karıştırmak mümkündür.

PS. Ben db'yi tasarlamadım ve sadece onu optimize ediyorum. Bunun için üzgünüm sonra ORM nesnelere sonuçlarını eşlemek zorunda çünkü Hayır, mantıklı değil

cevap

5

:(. Sen doğru bir şekilde yapmak için Main

aynı mülke hem ValB ve ValC eşleyemezsiniz bunlar aynı değere sahip olsa bile. ValB ve ValC ilişkiler için Main tabloda ayrı alanlar bulunmalıdır. Bu

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

Sen v_id sütunu kopyalayıp sonra doktrini düzgün eşleme yapabilir gibi.

+0

Evet, bu çözümün farkındayım, ancak bunun başka bir tablo oluşturmaya başvurmasının bir yolu var mı? Çünkü biz üretime girdik ve bu yapıya göç etmek çok yorucu ve tehlikeli .. – rrw

+1

Probleminizi anlıyorum. Ama hayır. Muhtemelen DBAL ile burada kalmak zorunda kalacaksınız. –

+0

teşekkür ederim cevap bana aydınlandı. Ben sadece varlığını dinamik olarak haritalamanın bir yolu olduğunu düşünüyorum. Ama bence bir yolu yok. Teşekkürler! :) – rrw