假设我有2个实体。 FirstEntity对第二个实体一无所知。 第二个实体有srcFisrt和dstFirst链接到第一个实体。 问题是:如何在doctrine中编写查询以从第一个实体加入第二个?
例如:
$em = $this->getEntityManager();
$qb = $em->createQueryBuilder();
$qb->select(array('second', 'src_first', 'dst_first'))
->from('TestOrm:SecondEntity', 'second')
->innerJoin('second.srcFirst', 'src_first')
->innerJoin('second.dstFirst', 'src_first');
工作很好,但我怎么写这样的东西?:
$em = $this->getEntityManager();
$qb = $em->createQueryBuilder();
$qb->select(array('first'))
->from('TestOrm:FirstEntity', 'first');
if($isDstSection) {
$qb->innerJoin('TestOrm:SecondEntity', 'second', ON, second.dstFirst = first);
} else {
$qb->innerJoin('TestOrm:SecondEntity', 'second', ON, second.srcFirst = first);
}
$qb->andWhere('second.isVisibleForExample', '1');
我知道,这个学说不能回归“第二”实体,因为firstEntity没有链接到第二个实体。我只需要通过第二次过滤firstEntity
答案 0 :(得分:0)
我觉得这样的事情可能有用:
if($isDstSection) {
$qb->innerJoin('TestOrm:SecondEntity', 'second', Join::WITH, 'second.dstFirst = first');
} else {
$qb->innerJoin('TestOrm:SecondEntity', 'second', Join::WITH, 'second.srcFirst = first');
}
$qb->andWhere('second.isVisibleForExample = :visibility')
->setParameter('visibility', 1);