【发布时间】:2015-04-17 09:28:28
【问题描述】:
我有一个名为 Content 的实体。 这是我所有其他与内容相关的实体的抽象基类。
/**
* MyBundle\Entity\Content
*
* @ORM\Entity(repositoryClass="MyBundle\Repository\ContentRepository")
* @ORM\InheritanceType("JOINED")
* @ORM\DiscriminatorColumn(name="discr", type="string")
* @ORM\Table(name="MyBundle_content")
* @ORM\HasLifecycleCallbacks
*/
abstract class Content
内容属性:
- 身份证
- 更新
- ....
此外,我还有很多不同的实体都扩展了内容。
在我的存储库中(另一个不是内容且不扩展内容的实体)我有一个相当复杂的查询,我想在其中选择所有内容对象的“更新”字段(取决于其他一些无关的东西)
编辑: 但在该查询中,内容实体通过“->leftJoin('p.content','c')”连接到另一个实体。 我的意思是我在一个完全不同的实体的存储库中,它与内容有关系,这就是为什么我用 '->leftJoin('p.content', 'c' 将内容加入到那里)'(其中 p 是我当前所在的存储库的实体。
问题是,在该查询原则中,将每个将 Content 扩展到内容表的实体都连接起来。 因为我有很多实体,所以我得到的错误是
General error: 1116 Too many tables; MySQL can only use 61 tables in a join
就我而言,我不需要所有这些连接表,因为我需要的信息仅在 Content 表中。
有没有办法只查询根实体表,同时仍然使用查询构建器而不编写自己的sql?
【问题讨论】:
标签: php symfony doctrine-orm doctrine