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

Mir*_*son 4 symfony doctrine-orm

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

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

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

我的错误在哪里?

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

Fra*_*k B 11

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

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

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