查询生成器中的Dql

时间:2017-05-08 07:15:15

标签: symfony doctrine-orm query-builder dql

我在dql问题上工作了几天。

在我的模型中,y有2个实体(机器和实例)。是一对多关系,因此机器人可以有多个实例,而实例只能有一台机器。

现在,我想获得所有具有一些实例的机器。在正常的dql中我得到它正常工作:

$ids = array(...)
$dql = "select M from AppBundle:Machine M INNER JOIN AppBundle:Instancia I WITH M.id = I.machine WHERE I.software IN (:ids)";
$query = $em->createQuery($dql)->setParameter('ids', $ids);
$maquinas = $query->getResult();

但是当我想在QueryBuilder中翻译时,我没有让它工作。我正在某些方面进行挑战:

//First way
$qb = $this->createQueryBuilder("M")
->innerJoin('Instancia', 'I', 'WITH', 'M.id = I.machine')
->where('I.software IN (:ids)')
->setParameters('ids', $ids);       
$maquinas = $qb->getQuery()->getResult();

//Second way
$qb = $this->createQueryBuilder("x")
->select('M')
->from('AppBundle:Machine', 'M')
->innerJoin('Instancia', 'I', 'WITH', 'M.id = I.machine')
->where('I.software IN (:ids)')
->setParameters('ids', $ids);       
$maquinas = $qb->getQuery()->getResult();

我的错是什么?

哪种方式更快,更简单的dql还是查询构建器?

非常感谢!!

0 个答案:

没有答案