在教义根实体的查询字段(接合)类表继承(Query field of root entity in

2019-10-22 17:17发布

我有一个实体命名的内容。 这是我所有的其他内容相关的实体我的抽象基类。

/**
* 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

内容属性:

  • ID
  • 更新
  • ....

而且我有很多不同的实体,所有的扩展内容。

在我的仓库( 那不是内容,而不是扩大内容的另一个实体 )我有一个相当复杂的查询,我想选择所有内容对象的“更新”字段(取决于其他一些unrelevant的东西)

编辑:但内容实体接合在与另一实体-在该查询“> leftJoin(‘p.content’,‘C’)”。 我的意思是,我在一个完全不同的实体,它只是有一个关于内容的存储库,这就是为什么我加入到内容有与“ - > leftJoin(” p.content”,‘C’ )”(其中p为实体,该库目前我在我。

问题是,在该查询学说所加入到内容表扩展内容的每一个实体。 因为我有相当多的实体,我得到的错误是

General error: 1116 Too many tables; MySQL can only use 61 tables in a join

在我来说,我并不需要所有这些连接的表,因为我需要的信息是在内容表孤单。

有什么办法同时仍使用QueryBuilder的,而不是写我自己的SQL查询仅根实体表?

Answer 1:

就在这里:

$result = $this->em->getRepository('MyBundle:Content')
             ->createQueryBuilder('c')
             ->select('c')
             ->leftJoin('c.Other', 'p')
             ->getQuery()
             ->getArrayResult();

这将仅查询根实体



Answer 2:

最后,我写了整个SQL语句自己,因为同时连接多个实体没有办法只是加入他们的基础机构,而不是实际的继承类。

编辑:谈过主义的开发商,自己编写SQL语句是要走的路。



文章来源: Query field of root entity in doctrine (joined) class table inheritance