具有子查询的学说查询不起作用

时间:2019-06-27 08:58:01

标签: symfony doctrine-orm doctrine

我使用Symfony 4和Doctrine,我想使用子查询进行复杂查询:

    $status = [0, 1];

    $subquery = $this->_em->createQueryBuilder()
        ->select('COUNT(item.id)')
        ->from('App\Entity\CalculItem', 'item')
        ->where('item.status IN (:status)')
        ->andWhere('item.file = c')
        ->setParameter('status', $status)
        ->getDQL();

    $query = $this->createQueryBuilder('c')
        ->where('c.status = :status')
        ->setParameter('status', 1)
        ->andWhere('('. $subquery .') = 0')
        ->andWhere('c.stat_items > 0')
        ->setMaxResults(1)
        ->getQuery()
        ;
    dump($query->getSQL());

    return $query->getOneOrNullResult();

我没有错误,但是它给我返回结果,而我没有任何期望。如果我直接在phpmyadmin中使用->getSQL(),则不会有任何结果。

我不明白为什么我使用“ Symfony / Doctrine方式”返回结果,而使用SQL查询却没有结果?

编辑

如果使用子查询,则只需要在“主”查询中绑定参数。由于您对子查询使用->getDQL(),因此它不会约束参数。

就我而言,我在两个查询中都使用了(我的错误):status参数。

0 个答案:

没有答案