/src/Query/Sqlite/Round.php
PHP | 46 lines | 32 code | 9 blank | 5 comment | 2 complexity | d9b6a3da57173fb6d4724c921d95ea63 MD5 | raw file
Possible License(s): BSD-3-Clause
- <?php
- namespace DoctrineExtensions\Query\Sqlite;
- use Doctrine\ORM\Query\AST\Functions\FunctionNode;
- use Doctrine\ORM\Query\Lexer;
- /**
- * @author winkbrace <winkbrace@gmail.com>
- */
- class Round extends FunctionNode
- {
- private $firstExpression = null;
- private $secondExpression = null;
- public function parse(\Doctrine\ORM\Query\Parser $parser)
- {
- $lexer = $parser->getLexer();
- $parser->match(Lexer::T_IDENTIFIER);
- $parser->match(Lexer::T_OPEN_PARENTHESIS);
- $this->firstExpression = $parser->SimpleArithmeticExpression();
- // parse second parameter if available
- if (Lexer::T_COMMA === $lexer->lookahead['type']) {
- $parser->match(Lexer::T_COMMA);
- $this->secondExpression = $parser->ArithmeticPrimary();
- }
- $parser->match(Lexer::T_CLOSE_PARENTHESIS);
- }
- public function getSql(\Doctrine\ORM\Query\SqlWalker $sqlWalker)
- {
- // use second parameter if parsed
- if (null !== $this->secondExpression) {
- return 'ROUND('
- . $this->firstExpression->dispatch($sqlWalker)
- . ', '
- . $this->secondExpression->dispatch($sqlWalker)
- . ')';
- }
- return 'ROUND(' . $this->firstExpression->dispatch($sqlWalker) . ')';
- }
- }