我正在尝试使用ORM创建一个querybuilder。但我偶然发现了一个与2个可能的表有关系的实体上的字段。使用这种结构,(IMHO)无法将其映射到实体本身。
╔═══════╗ ╔═══════╗ ╔═══════╗
║ ValB ║ ║ Main ║ ║ ValC ║
╠══╦════╣ ╠══╦════╣ ╠══╦════╣
║ *║ pk ║-- + ║ *║ pk ║ +---║ *║ pk ║
╠══╬════╣ | ╠══╬════╣ | ╠══╬════╣
║ ║ ║ +--║ ║v_id║---+ ║ ║ ║
╠══╬════╣ ╠══╬════╣ ╠══╬════╣
║ ║ ║ ║ ║ ║ ║ ║ ║
╚══╩════╝ ╚══╩════╝ ╚══╩════╝
是否可以将DBAL QueryBuilder与ORM QueryBuilder混合,或者仍然使用ORM QueryBuilder的任何其他方式主要代码。
PS。我没有设计数据库,我只是优化它。抱歉:(
答案 0 :(得分:5)
不,没有意义,因为后来ORM必须将结果映射到对象。您无法将ValB
和ValC
映射到Main
要正确执行此操作,Main
表中应该有ValB
和ValC
关系的单独字段。即使它们具有相同的价值。喜欢这个
╔═══════╗ ╔════════╗ ╔═══════╗
║ ValB ║ ║ Main ║ ║ ValC ║
╠══╦════╣ ╠══╦═════╣ ╠══╦════╣
║ *║ pk ║-- + ║ *║ pk ║ +---║ *║ pk ║
╠══╬════╣ | ╠══╬═════╣ | ╠══╬════╣
║ ║ ║ +--║ ║vB_id║ | ║ ║ ║
╠══╬════╣ ╠══╬═════╣ | ╠══╬════╣
║ ║ ║ ║ ║vC_id║---+ ║ ║ ║
╚══╩════╝ ╚══╩═════╝ ╚══╩════╝
您可以复制v_id
列,然后在Doctrine中进行正确的映射。