在 Doctrine2 中,有没有一种方法可以创建一个基于复杂 sql 查询结果的计算实体?
背景:
在我正在处理的应用程序中(在我加入项目之前存在),有一个概念:属性(属于属性,有很多属性,覆盖属性)catalogItem(属于catalogItem,有很多catalogItem,有很多属性)
这个想法是 catalogItem 有它自己的层次结构,目前达到 4 级深度。每个catalogItem 都继承其父级的属性,但这些属性(也有自己的层次结构)可以在任何时候被覆盖。然后,此覆盖的层次结构由直接的 catalogItem 使用,它也是子项,具有创建覆盖的相同能力。
因此,直接关联的典型结构在这里毫无用处,因为我们总是需要查看计算的最终结果。
所以,我的问题是,我希望能够将这些计算结果注入到 Doctrine2 中,然后可以将其用作标准实体,能够正常遍历关系等。
这不能作为 MySQL 视图来完成,因为性能下降。此外,创建计算结果的查询相当复杂,为了提高性能,任何过滤(例如,通过 X catalogItem)都发生在第 3 级嵌套子查询以及顶级查询以及子查询的存在意味着普通的 MySQL 视图是直接不兼容的(尽管有解决方法)。
问题:
我希望能够在 Doctrine2 中创建一个实体,而不是现有的“表”,实际的 MySQL 查询将存在,并将作为子查询运行。我还没有在 Doctrine2 中看到任何实现我所描述的东西的方法,我希望有人可以提出解决方案或解决方法来实现类似的结果?