可以将Doctrine DBAL与ORM查询生成器混合使用吗?

时间:2016-06-10 07:05:03

标签: php symfony orm doctrine-orm dbal

我正在尝试使用ORM创建一个querybuilder。但我偶然发现了一个与2个可能的表有关系的实体上的字段。使用这种结构,(IMHO)无法将其映射到实体本身。

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

是否可以将DBAL QueryBuilder与ORM QueryBuilder混合,或者仍然使用ORM QueryBuilder的任何其他方式主要代码。

PS。我没有设计数据库,我只是优化它。抱歉:(

1 个答案:

答案 0 :(得分:5)

不,没有意义,因为后来ORM必须将结果映射到对象。您无法将ValBValC映射到Main

中的同一媒体资源

要正确执行此操作,Main表中应该有ValBValC关系的单独字段。即使它们具有相同的价值。喜欢这个

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

您可以复制v_id列,然后在Doctrine中进行正确的映射。