使用DateTime从Doctrine中获取方法findBy()

时间:2015-11-08 01:57:01

标签: symfony doctrine-orm

我有以下代码,但这不起作用:

$event= $this->getDoctrine()
        ->getRepository('AppBundle:Event')
        ->findBy(
            array(
                "datestart" => array(new \DateTime())
            )
        );

我需要一个事件列表,这些事件现在比较新。

我的错误在哪里?

或者是不是能够使用doctrine的默认findBy()函数?

1 个答案:

答案 0 :(得分:9)

findBy只搜索完全匹配,而你需要更大的匹配。在这种情况下以及许多其他情况下,您可以编写自己的查询。您可以使用DQL或queryBuilder。如果您希望能够在其他地方重用查询,那么您可以将查询放在存储库类中,这也是一个很好的做法。 (check the docs)。现在,您可以找到可以放入控制器的DQL示例:

$events = $this->getDoctrine()
        ->getManager()
        ->createQuery('SELECT e FROM AppBundle:Event e WHERE e.datestart > CURRENT_DATE()')
        ->getResult();

我将你的varbele改为$ events(用s),因为你期待可能有多个事件。