对于Symfony 3项目中使用Doctrine的优化查询,我想选择多个这样的实体:
实体“e”具有oneToMany关系,“a”也具有与“au”的OneToMany关系(“au”应该是ManyToMany关系中的链接表,但我需要一些额外的字段)
$qb = $this->createQueryBuilder('e');
return $qb->select('e, d, du')
->leftJoin('e.demos', 'd')
->leftJoin('d.demo_user', 'du')
->getQuery()
->getResult();
如果我的一个关系为空(例如没有demo_user),我的实体e和相关信息不会发送到结果中。即使没有demo也没有demo_user相关,我想拥有所有结果。
感谢您的帮助; - )
答案 0 :(得分:0)
在查询中连接3个Entit的示例: 您在查询
中填充链接表return $this->createQueryBuilder( 'e' )
// if skip "->select ..." then resive all collumn form enities: E, AU, DU
->select(
'e.id as id',
'e.taskName as taskName',
'e.dueDate as dueDate',
'au.isOwn as isOwn',
'du.fild2 as fild2'
)
->leftJoin('YourBundle:EntityAU', 'au', 'WITH', 'au.idTask = e.id')
->leftJoin('YourBundle:EntityDU', 'du', 'WITH', 'ad.fild1 = au.id')
->where( 'au.idParent = :par1' )
->setParameter( 'par1', $varId )
->orderBy( 't.parentString', 'ASC' )
->getQuery()
->getResult();