Symfony findBy DATEDIFF

时间:2015-03-12 14:21:48

标签: php symfony doctrine-orm

我正在尝试获取所有日期超过4周的条目

$oRepoArticleImage->findBy(array('deletedAt' => 'DATEDIFF(now(), deletedAt) > 4'));

我收到以下错误。我做错了什么?

  

PHP致命错误:在非对象上调用成员函数format()   在   ... /供应商/教义/ DBAL / lib中/教义/ DBAL /类型/ DateTimeType.php   第53行

1 个答案:

答案 0 :(得分:2)

Find by always总是需要一个键值数组。在您的情况下,您尝试使用字符串作为DateTime对象。这不起作用。要获得预期的结果,您必须使用如下的查询构建器:

     $now = new \DateTime();
    // four weeks in days (28)
    $daysAgo = $now->sub(new \DateInterval('P28D'));
    $images = $oRepoArticleImage->createQueryBuilder('i')
        ->where('i.deletedAt < :date')
        ->setParameter('date', $daysAgo)
        ->getQuery()
        ->getResult();