编程语言
首页 > 编程语言> > php – 可以将Doctrine DBAL与ORM Query Builder混合使用吗?

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