Symfony和Doctrine查询小时范围

时间:2013-11-04 21:56:30

标签: php sql symfony doctrine-orm dql

在上一个问题(SQL query between two times on every day)中,我询问了查询一组数据并返回所有与两个小时值相关的日期相关的条目。我也试图排除周六和周日。我收到的答案在处理普通SQL时是有效的:

SELECT *
FROM yourtable
WHERE TIME(created_at) BETWEEN '08:00:00' AND '15:00:00'

但实际上我需要在使用Symfony2 / Doctrine时这样做。当我创建以下内容时,这并不奇怪:

$myQuery= $this->em->createQuery("SELECT f FROM myBundle:Foo f
            WHERE f.bar = 1
            AND TIME(f.myTimestamp) BETWEEN :myStart AND :myEnd
            AND DAYOFWEEK(f.myTimestamp) NOT IN (1,7)") 
                ->setParameter('myStart', $myStart)
                ->setParameter('myEnd', $myEnd)
                ->getResult();

我得到了例外,因为TIME和DAYOFWEEK不是Doctrine的原生函数。 Doctrine中有什么东西我可以用它来执行类似的查询,还是我运气不好?感谢。

1 个答案:

答案 0 :(得分:1)

DQL中不支持DAYOFWEEKTIMEDAY,...

最快的满足方式是native MySQL query