Hi all,

I need to use some MySQL functions (MONTH, YEAR, SIN, ACOS, etc) in 
Doctrine2 through DQL. What I've done until now was the following (but it 
didn't work):

1. I've created a class for the MySQL function I want to use (for instance, 
ACOS):

namespace MOBBase\Doctrine\ORM\Query\AST\Functions;

use Doctrine\ORM\Query\AST\Functions\FunctionNode,
    Doctrine\ORM\Query\Lexer;

class Acos extends FunctionNode {

    public $arithmeticExpression;

    public function getSql(\Doctrine\ORM\Query\SqlWalker $sqlWalker) {

        return 'ACOS(' . $sqlWalker->walkSimpleArithmeticExpression(
                        $this->arithmeticExpression
                ) . ')';
    }

    public function parse(\Doctrine\ORM\Query\Parser $parser) {

        $lexer = $parser->getLexer();

        $parser->match(Lexer::T_IDENTIFIER);
        $parser->match(Lexer::T_OPEN_PARENTHESIS);

        $this->arithmeticExpression = $parser->SimpleArithmeticExpression();

        $parser->match(Lexer::T_CLOSE_PARENTHESIS);
    }
}

2. I've referenced this class in config/autoload/doctrine_orm.local.php:

return array(
    'doctrine' => array(
        'configuration' => array(
            'orm_default' => array(
                'datetime_functions' => array(
                    'Month' => 
'MOBBase\Doctrine\ORM\Query\AST\Functions\Month'
                ),
                'numeric_functions' => array(
                    'ACOS' => 
'MOBBase\Doctrine\ORM\Query\AST\Functions\Acos'
                )
            )
        ), 
    ...

3. I've created a DQL query that uses the custom function. However, when it 
is executed, Doctrine triggers the following error:

[Syntax Error] line 0, col 150: Error: Expected known function, got 'MONTH'


Does anyone know how to correctly setup a custom MySQL function in 
Doctrine2 + ZF2?

Thanks in advance

-- 
You received this message because you are subscribed to the Google Groups 
"doctrine-user" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To post to this group, send email to [email protected].
Visit this group at http://groups.google.com/group/doctrine-user.
For more options, visit https://groups.google.com/d/optout.

Reply via email to