【发布时间】:2020-01-31 21:49:48
【问题描述】:
使用 Doctrine 的 QueryBuilder,我尝试在日期数组上使用 in() 方法,但我发现它只允许字符串值。
/** @param DateTime[] $dates */
public function findByDate(array $dates): array {
$qb = $this->createQueryBuilder('Event');
$qb->andWhere($qb->expr()->in('Event.date', ':dates'));
$qb->setParameter('dates', $dates);
return $qb->getQuery()->getResult();
}
使用参数 [{"date":"2020-01-31 00:00:00.000000","timezone_type":3,"timezone":"Europe/ 执行 'SELECT [...]' 时发生异常柏林"}]:
可捕获的致命错误:DateTimeImmutable 类的对象无法转换为字符串
是否有任何简单的等价于 in() 函数的日期? (最好不要使用 DQL)
【问题讨论】:
-
Related. 我建议使用 kejwmen 那里建议的
array_map方法。很简单。 -
@Jeto 当然...但是我们可以确定
Y-m-d H:i:s格式适用于任何数据库实现/发行版/设置(它是一种 SQL 标准吗?),或者它可能会因数据库服务器? -
当然,这种方式可能不太便携。我对 Doctrine 知之甚少,但可能有一种方法可以强制列的日期格式,然后在执行上述操作时可能会检索它。无论如何,您的解决方案对我来说看起来不错(您可能想尝试使其更通用并将其发布在该 github 问题上)。
-
好主意 :) 添加了对该问题的评论
标签: php doctrine query-builder