如何将 DATE 添加到学说查询中?

How to add DATE to doctrine query?

我有一个 Y-m-d H:i:s 格式的日期字段。现在用户可以仅使用日期进行搜索。我有这样的查询:

$qb->andWhere('DATE(vc.updatedDatetime) >= :startDate AND DATE(vc.updatedDatetime) <= :endDate')
->setParameter('startDate', $filterArray['startDate'])
->setParameter('endDate', $filterArray['endDate']);

我在 doctrine.yaml 文件中添加了以下行。

    dql:
        string_functions:
            DATE: DoctrineExtensions\Query\Mysql\Date

但我收到以下错误:

Attempted to load class "Date" from namespace "DoctrineExtensions\Query\Mysql".
Did you forget a "use" statement for e.g. "Twig_Extensions_Extension_Date" or "Symfony\Component\Validator\Constraints\Date"?

虽然您 可以 创建自己的扩展以将 DATE 功能添加到 Doctrine,或者下载类似 beberlei/DoctrineExtensions 的东西来为您做这件事,在结束是浪费时间。你不需要它。

你可以简单地做:

$qb
    ->andWhere('vc.updatedDatetime > :startDate')
    ->andWhere('vc.updatedDatetime < :endDate')
    ->setParameter('startDate', $startDate)
    ->setParameter('endDate', $endDate)

对于您的开始日期,您只需要使用 > 运算符。没有时间部分的日期时间字符串将被视为时间部分设置为 00:00:00.

的日期时间

对于结束日期,您只需使用 < 运算符,然后 在用户提供的任何日期上加一天

例如

$endDate = (new DateTime($filterArray['endDate']))->add(new DateInterval('P1D'))

假设提供的日期是“YYYY-MM-DD”格式,这似乎是因为您使用代码的方式,以上就足够了。