DQL不会接受日期



我具有此存储库功能,可以在特定日期内选择与图像拟合相关的所有投票:

public function getTopNImages(int $n)
    {
        $date = date_format(new DateTime('first day of this month'), 'Y-m-d H:i:s');
        var_dump($date);
        $q2 = $this->createQueryBuilder('aliasi2')
            ->select('count(v.id)')
            ->innerJoin('aliasi2.votes', 'v')
            ->where('aliasi2 = i')
            ->andwhere("date_diff(v.date, $date) >= 0");
        return $this->createQueryBuilder('i')
            ->select(array(
                'i',
                '(' . $q2->getDQL() .') votes' 
            ))
            ->orderBy('votes', 'DESC')
            ->setMaxResults($n)
            ->getQuery()
            ->getResult();
    }

我正在使用与MySQL中的日期格式相同,var_dump输出以下内容:

字符串(19)" 2017-03-01 09:39:34"

但是由于某种原因,我得到了:

[语法错误]第0行,col 137:错误:预期学说 orm query lexer :: t_close_parenthesis,get' - ' - '

这里有什么问题?

您忘了通过简单的引号保护日期,因此Lexer在第一个' - '中失败。

请参阅此处的问题:

"date_diff(v.date, 2017-03-01 09:39:34) >= 0"

您需要这样做:

"date_diff(v.date, '$date') >= 0"

甚至更好地使用setParameter()

您是否尝试过:

$q2 = $this->createQueryBuilder('aliasi2')
        ->select('count(v.id)')
        ->innerJoin('aliasi2.votes', 'v')
        ->where('aliasi2 = i')
        ->andwhere("date_diff(v.date, :date) >= 0")
        ->setParameter('date', $date);

刚刚设置日期参数...

相关内容

  • 没有找到相关文章

最新更新