如何将 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”格式,这似乎是因为您使用代码的方式,以上就足够了。
我有一个 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”格式,这似乎是因为您使用代码的方式,以上就足够了。