Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- <?php
- namespace App\Adapters\Doctrine;
- use Doctrine\ORM\Query\AST\Functions\FunctionNode;
- use Doctrine\ORM\Query\AST\Subselect;
- use Doctrine\ORM\Query\Lexer;
- use Doctrine\ORM\Query\Parser;
- use Doctrine\ORM\Query\SqlWalker;
- class RegexSubstrFunction extends FunctionNode
- {
- /**
- * @var Subselect
- */
- private $string;
- /**
- * @var Subselect
- */
- private $pattern;
- /**
- * @param Parser $parser
- * @throws \Doctrine\ORM\Query\QueryException
- */
- public function parse(Parser $parser)
- {
- $parser->match(Lexer::T_IDENTIFIER);
- $parser->match(Lexer::T_OPEN_PARENTHESIS);
- $this->string = $parser->ArithmeticPrimary();
- $parser->match(Lexer::T_COMMA);
- $this->pattern = $parser->Literal();
- $parser->match(Lexer::T_CLOSE_PARENTHESIS);
- }
- /**
- * @param SqlWalker $sqlWalker
- * @return string
- * @throws \Doctrine\ORM\Query\AST\ASTException
- */
- public function getSql(SqlWalker $sqlWalker)
- {
- return sprintf('REGEX_SUBSTR(%s, %s)',
- $this->string->dispatch($sqlWalker),
- $this->pattern->dispatch($sqlWalker)
- );
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement