*/ class IfElse extends FunctionNode { private $expr = []; public function parse(\Doctrine\ORM\Query\Parser $parser) { $parser->match(Lexer::T_IDENTIFIER); $parser->match(Lexer::T_OPEN_PARENTHESIS); $this->expr[] = $parser->ConditionalExpression(); for ($i = 0; $i < 2; $i++) { $parser->match(Lexer::T_COMMA); $this->expr[] = $parser->ArithmeticExpression(); } $parser->match(Lexer::T_CLOSE_PARENTHESIS); } public function getSql(\Doctrine\ORM\Query\SqlWalker $sqlWalker) { return sprintf( 'CASE WHEN %s THEN %s ELSE %s END', $sqlWalker->walkConditionalExpression($this->expr[0]), $sqlWalker->walkArithmeticPrimary($this->expr[1]), $sqlWalker->walkArithmeticPrimary($this->expr[2]) ); } }