Random::parse()   A
last analyzed

Complexity

Conditions 1
Paths 1

Size

Total Lines 6

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 5
CRAP Score 1

Importance

Changes 0
Metric Value
dl 0
loc 6
ccs 5
cts 5
cp 1
rs 10
c 0
b 0
f 0
cc 1
nc 1
nop 1
crap 1
1
<?php
2
namespace Doctrine\Tools;
3
4
use Doctrine\ORM\Query\AST\Functions\FunctionNode;
5
use Doctrine\ORM\Query\Lexer;
6
use Doctrine\ORM\Query\Parser;
7
use Doctrine\ORM\Query\QueryException;
8
use Doctrine\ORM\Query\SqlWalker;
9
10
class Random extends FunctionNode
11
{
12
    /**
13
     * @param Parser $parser
14
     */
15 9
    public function parse(Parser $parser)
16
    {
17 9
        $parser->match(Lexer::T_IDENTIFIER);
18 9
        $parser->match(Lexer::T_OPEN_PARENTHESIS);
19 9
        $parser->match(Lexer::T_CLOSE_PARENTHESIS);
20 9
    }
21
22
    /**
23
     * @param  SqlWalker $sqlWalker
24
     * @return string
25
     * @throws QueryException
26
     */
27 9
    public function getSql(SqlWalker $sqlWalker)
28
    {
29 9
        switch ($sqlWalker->getConnection()->getDatabasePlatform()->getName()) {
30 9
            case 'postgresql':
31 3
                return 'RANDOM()';
32 6
            case 'mysql':
33 3
                return 'RAND()';
34 2
            default:
35 3
                throw new QueryException("You can't use RANDOM()!");
36 2
        }
37
    }
38
}
39