Doctrine中的findBy()方法与DateTime

5
我有以下代码,但这并不能正常工作:
$event= $this->getDoctrine()
        ->getRepository('AppBundle:Event')
        ->findBy(
            array(
                "datestart" => array(new \DateTime())
            )
        );

我需要一个事件列表,这些事件是现在之后的。

我的错误在哪里?

或者使用doctrine的默认findBy()函数无法实现吗?

1个回答

11

findBy仅搜索精确匹配,而你需要大于。在这种情况以及许多其他情况下,您可以编写自己的查询。您可以使用DQL或queryBuilder。如果您想在其他位置重复使用查询,则可以将查询放置在存储库类中,这也是一个好的实践。(查看文档)。现在在这里,您可以找到一个DQL示例,可以将其放入您的控制器中:

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

我将你的变量更改为 $events(带s),因为你预计可能会有多个事件。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接