公式の説明に従って、別の 2 番目の引数 (必須ではありません) を取ることができるカスタム MySQL 関数 ROUND() を作成したいと思います。
これまでのところ、私はこれを行いました:
<?php
namespace HQF\Bundle\PizzasBundle\DQL;
use \Doctrine\ORM\Query\AST\Functions\FunctionNode;
use \Doctrine\ORM\Query\Lexer;
class MysqlRound extends FunctionNode
{
public $simpleArithmeticExpression;
public function getSql(\Doctrine\ORM\Query\SqlWalker $sqlWalker)
{
return 'ROUND(' . $sqlWalker->walkSimpleArithmeticExpression(
$this->simpleArithmeticExpression
) . ')';
}
public function parse(\Doctrine\ORM\Query\Parser $parser)
{
$lexer = $parser->getLexer();
$parser->match(Lexer::T_IDENTIFIER);
$parser->match(Lexer::T_OPEN_PARENTHESIS);
$this->simpleArithmeticExpression = $parser->SimpleArithmeticExpression();
$parser->match(Lexer::T_CLOSE_PARENTHESIS);
}
}
ROUND(XX)
しかし、OKであり、 OKでもあるという事実をどのように実装するのROUND(XX, YY)
でしょうか?