2016-06-10 57 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

相关问题