Before writing your own, make sure you check out the "DoctrineExtensions",
written by Benjamin Eberlei.

On how to enable them in ZF2, someone else might be able to help...

Cheers!
On Mar 16, 2014 1:04 PM, "Diogo Domanski" <[email protected]> wrote:

> 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.
>

-- 
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