Skip to content

Instantly share code, notes, and snippets.

@rseon
Last active March 22, 2019 13:13
Show Gist options
  • Save rseon/97583120d1669bdefaa131559304c1a2 to your computer and use it in GitHub Desktop.
Save rseon/97583120d1669bdefaa131559304c1a2 to your computer and use it in GitHub Desktop.
Doctrine 2 cheatsheet

Doctrine 2 cheatsheet

Ajouter une fonction MySQL (ex : DATE())

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
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment