0

我开始创建 DQL 请求,但我有一个小问题,我不知道为什么。

   SELECT count(*)
          FROM bw_ach bw
          where type_demande = 'MES' and soustype_demande in ('MES avec intervention', 'MES dégradée') 
          and tenu_delai_standard = 'Oui' and date_statut_cloture BETWEEN :dateFrom AND :dateTo

我在 SQL 中有这个请求,它可以正常工作,我得到一个正常的结果,但我试图在 DQL 上对其进行转换,所以我得到了这个:

return $this->createQueryBuilder('p')
            ->select('COUNT(p)')
            ->from(bwACH::class, 'bw')
            ->andWhere("bw.TYPE_DEMANDE = 'MES'")
            ->andWhere("bw.SOUSTYPE_DEMANDE in ('MES avec intervention', 'MES dégradée')")
            ->andWhere("bw.TENU_DELAI_STANDARD = 'Oui'")
            ->andWhere('bw.DATE_STATUT_CLOTURE BETWEEN :dateFrom AND :dateTo')
            ->setParameter('dateFrom', $dateFrom)
            ->setParameter('dateTo', $dateTo)

但我没有相同的结果,使用 DQL 它要大得多。我认为这是我的选择不正确的问题,但是什么?我不知道。

编辑:

我得到了答案,这是一件愚蠢的事情

return $this->createQueryBuilder('p')
            ->select('COUNT(p)')
            ->andWhere("p.TYPE_DEMANDE = 'MES'")
            ->andWhere("p.SOUSTYPE_DEMANDE in ('MES avec intervention', 'MES dégradée')")
            ->andWhere("p.TENU_DELAI_STANDARD = 'Oui'")
            ->andWhere('p.DATE_STATUT_CLOTURE BETWEEN :dateFrom AND :dateTo')
            ->setParameter('dateFrom', $dateFrom)
            ->setParameter('dateTo', $dateTo)

但我仍然试图搜索为什么我的 from 是无用的。感谢大家 :)

4

2 回答 2

1

问题可能与您在 php $dateFrom 和 $dateTo 中的日期参数有关,它们没有像您想象的那样解释

您应该尝试像这样更改日期部分:

->setParameter('dateFrom', $dateFrom->format("Y-m-d H:i:s"))
->setParameter('dateTo', $dateTo->format("Y-m-d H:i:s"))
于 2021-03-03T23:34:39.177 回答
0

from 是无用的,因为它EntityRepository在创建 queryBuilder 时覆盖了集合:

/**
     * Creates a new QueryBuilder instance that is prepopulated for this entity name.
     *
     * @param string $alias
     * @param string $indexBy The index for the from.
     *
     * @return QueryBuilder
     */
    public function createQueryBuilder($alias, $indexBy = null)
    {
        return $this->_em->createQueryBuilder()
            ->select($alias)
            ->from($this->_entityName, $alias, $indexBy);
    }

广告您提供的别名 ( p) 与您在 from 中设置的别名 ( bw) 不同。然后你要求数数p

于 2021-03-04T16:08:22.130 回答