php – 可以将Doctrine DBAL与ORM Query Builder混合使用吗?
作者:互联网
我正在尝试使用ORM创建一个querybuilder.但我偶然发现了一个与2个可能的表有关系的实体上的字段.有了这种结构,(恕我直言)就不可能将它映射到实体本身.
╔═══════╗ ╔═══════╗ ╔═══════╗
║ ValB ║ ║ Main ║ ║ ValC ║
╠══╦════╣ ╠══╦════╣ ╠══╦════╣
║ *║ pk ║-- + ║ *║ pk ║ +---║ *║ pk ║
╠══╬════╣ | ╠══╬════╣ | ╠══╬════╣
║ ║ ║ +--║ ║v_id║---+ ║ ║ ║
╠══╬════╣ ╠══╬════╣ ╠══╬════╣
║ ║ ║ ║ ║ ║ ║ ║ ║
╚══╩════╝ ╚══╩════╝ ╚══╩════╝
可以将DBAL QueryBuilder与ORM QueryBuilder混合,或者仍然使用ORM QueryBuilder的任何其他方式主要在代码上.
PS.我没有设计数据库,我只是优化它.非常遗憾 :(
解决方法:
不,它没有意义,因为后来ORM必须将结果映射到对象.您无法将ValB和ValC映射到Main中的同一属性
要正确执行,主表中应该有单独的字段用于ValB和ValC关系.即使它们具有相同的价值.像这样
╔═══════╗ ╔════════╗ ╔═══════╗
║ ValB ║ ║ Main ║ ║ ValC ║
╠══╦════╣ ╠══╦═════╣ ╠══╦════╣
║ *║ pk ║-- + ║ *║ pk ║ +---║ *║ pk ║
╠══╬════╣ | ╠══╬═════╣ | ╠══╬════╣
║ ║ ║ +--║ ║vB_id║ | ║ ║ ║
╠══╬════╣ ╠══╬═════╣ | ╠══╬════╣
║ ║ ║ ║ ║vC_id║---+ ║ ║ ║
╚══╩════╝ ╚══╩═════╝ ╚══╩════╝
您可以复制v_id列,然后在Doctrine中进行正确的映射.
标签:php,orm,symfony,doctrine-orm,dbal 来源: https://codeday.me/bug/20190519/1135007.html