/src/Query/Mysql/Rand.php
PHP | 37 lines | 26 code | 8 blank | 3 comment | 2 complexity | d75a5cd3e588e965c4e0b0045e8ec6f8 MD5 | raw file
Possible License(s): BSD-3-Clause
- <?php
- namespace DoctrineExtensions\Query\Mysql;
- use Doctrine\ORM\Query\AST\Functions\FunctionNode;
- use Doctrine\ORM\Query\AST\SimpleArithmeticExpression;
- use Doctrine\ORM\Query\Lexer;
- class Rand extends FunctionNode
- {
- /**
- * @var SimpleArithmeticExpression
- */
- private $expression = null;
- public function getSql(\Doctrine\ORM\Query\SqlWalker $sqlWalker)
- {
- if ($this->expression) {
- return 'RAND(' . $this->expression->dispatch($sqlWalker) . ')';
- }
- return 'RAND()';
- }
- public function parse(\Doctrine\ORM\Query\Parser $parser)
- {
- $lexer = $parser->getLexer();
- $parser->match(Lexer::T_IDENTIFIER);
- $parser->match(Lexer::T_OPEN_PARENTHESIS);
- if (Lexer::T_CLOSE_PARENTHESIS !== $lexer->lookahead['type']) {
- $this->expression = $parser->SimpleArithmeticExpression();
- }
- $parser->match(Lexer::T_CLOSE_PARENTHESIS);
- }
- }