我有一个父实体和许多具有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')
?或者如何从数据库创建视图并以最佳方式将其传递给学说。