Si vous rencontrez cette erreur : Error: Expected known function, got 'DATE'
, c'est une fonction MySQL non reconnue par Doctrine.
Fichier /src/AppBundle/DQL/Date.php
:
<?php
namespace AppBundle\DQL;
use Doctrine\ORM\Query\Lexer;
use Doctrine\ORM\Query\AST\Functions\FunctionNode;
use Doctrine\ORM\Query\SqlWalker;
use Doctrine\ORM\Query\Parser;
class Date extends FunctionNode
{
protected $dateExpression;
public function getSql( SqlWalker $sqlWalker )
{
return 'DATE (' . $sqlWalker->walkArithmeticExpression( $this->dateExpression ) . ')';
}
public function parse(Parser $parser )
{
$parser->Match( Lexer::T_IDENTIFIER );
$parser->Match( Lexer::T_OPEN_PARENTHESIS );
$this->dateExpression = $parser->ArithmeticExpression();
$parser->Match( Lexer::T_CLOSE_PARENTHESIS );
}
}
Fichier /app/config/config.yml
:
doctrine:
orm:
dql:
datetime_functions:
DATE: AppBundle\DQL\Date