【发布时间】:2013-03-23 22:20:34
【问题描述】:
在 Doctrine2 中,有没有一种方法可以创建基于复杂 sql 查询结果的计算实体?
背景:
在我正在处理的应用程序中(在我加入项目之前存在),有一个概念: 属性(属于属性,有很多属性,overrides属性) catalogItem(属于catalogItem,有很多catalogItem,有很多属性)
这个想法是catalogItem 有它自己的层次结构,目前达到4 级深度。 每个catalogItem 都继承其父级的属性,但这些属性(也有自己的层次结构)可以在任何时候被覆盖。 这个被覆盖的层次结构随后被直接的 catalogItem 使用,它也是子项,具有创建覆盖的相同能力。
因此,直接关联的典型结构在这里毫无用处,因为我们总是需要查看计算的最终结果。
所以,我的问题是,我希望能够将这些计算结果注入 Doctrine2,然后可以将其用作标准实体,能够正常遍历关系等。
这不能作为 MySQL 视图来完成,因为性能下降。此外,创建计算结果的查询相当复杂,为了提高性能,任何过滤(例如,通过 X 目录项)都发生在第三级嵌套子查询以及顶级查询以及子查询的存在表示普通的 MySQL 视图直接不兼容(尽管有变通方法)。
问题:
我希望能够在 Doctrine2 中创建一个实体,而不是现有的“表”,而是存在实际的 MySQL 查询,并将作为子查询运行。 我还没有在 Doctrine2 中看到任何实现我所描述的东西的方法,我希望有人可以提出解决方案或解决方法来实现类似的结果?
【问题讨论】:
-
请注意,我已经将复杂的 SQL 查询设置为 Doctrine2 本机查询,并映射到实体中以获取结果。不过,这并不是我真正想要的,因为它不能作为一个可以与之关联的实体存在。我正在寻找一个允许计算实体充当普通 Doctrine2 实体的结果。
标签: mysql inheritance doctrine-orm doctrine associations