我尝试执行SQL请求以获取所有未来事件。
到目前为止,它看起来像这样:
$dql = "SELECT a FROM AOFVHFlyBundle:Flight a WHERE precisedate >= NOW()";
$query = $em->createQuery($dql);
但是我收到以下错误:
line 0, col 59: Error: Expected known function, got 'NOW'
我如何获得未来的所有航班?
答案 0 :(得分:2)
您正在寻找的DQL函数是CURRENT_TIMESTAMP()
。如doc。
答案 1 :(得分:1)
尝试使用CURRENT_TIMESTAMP无括号。
答案 2 :(得分:0)
如果您有兴趣,可以创建自己的DQL功能。只是另一种选择。
完整示例:How to create and use custom built doctrine DQL function in symfony
# sport/src/Football/FrontendBundle/DQL/NowTs.php
namespace Football\FrontendBundle\DQL;
use Doctrine\ORM\Query\AST\Functions\FunctionNode;
use Doctrine\ORM\Query\Lexer;
use Doctrine\ORM\Query\Parser;
use Doctrine\ORM\Query\SqlWalker;
class NowTs extends FunctionNode
{
public function parse(Parser $parser)
{
$parser->match(Lexer::T_IDENTIFIER);
$parser->match(Lexer::T_OPEN_PARENTHESIS);
$parser->match(Lexer::T_CLOSE_PARENTHESIS);
}
public function getSql(SqlWalker $sqlWalker)
{
return 'NOW()';
}
}
在您的查询中:
->where('..... < NOW() ....')