使用嵌套选择而不是内连接

时间:2017-08-07 12:12:10

标签: php mysql symfony doctrine dbal

我有一个父实体和许多具有JOINED策略的继承实体。 在Doctrine中,当我想要更新或选择某行子表原则时,使用inner join创建大量查询。

父类:

namespace Foo\BarBundle\Entity;

/**
 * @ORM\InheritanceType("JOINED")
 */
abstract class Parent {
    //..
}

/**
 * @ORM\Entity(repositoryClass="Foo\BarBundle\Entity\childRepository")
 */
class Child extends Parent {
    //..
}    

我想删除在我的存储库类中的create query builder中自动生成的内连接。 如果可以,还可以findBy()findOneBy()

在我的存储库类中:

namespace Foo\BarBundle\Entity;

class ChildRepository extends ParentRepository {

    public function getAllBySomeQuery() {
        $qb = $this->createQueryBuilder('child');

        //...
    }
}

这是生成查询的示例:

  

SELECT ch.some_field FROM child_entity ch INNER JOIN parent_entity parent1 ON ch.id = parent1.id

我暂时通过将JOINED策略更改为SINGLE_TABLE来解决此问题,但这会导致与此问题无关的其他问题。

如何在我的存储库类中进行嵌套连接而不是使用$qb = $this->createQueryBuilder('child')?或者如何从数据库创建视图并以最佳方式将其传递给学说。

0 个答案:

没有答案