Skip to content

Instantly share code, notes, and snippets.

@eftakhairul
Last active December 15, 2015 16:49
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save eftakhairul/5291837 to your computer and use it in GitHub Desktop.
Save eftakhairul/5291837 to your computer and use it in GitHub Desktop.
Oracle 11g Extractvalue DQL function for Doctrine
/**
* This is the custom extractvalue function for doctrine.
*
* www.eftakhairul.com
*/
use Doctrine\ORM\Query\Lexer;
use Doctrine\ORM\Query\AST\Functions\FunctionNode;
/**
* ExtractvalueFunction ::= "EXTRACTVALUE" "(" StateFieldPathExpression, InParameter")"
* ExtractvalueFunction ::= "EXTRACTVALUE" "(" columnName, searchPattern ")"
*
*
* @author Eftakhairul Islam <eftakhairul.islam@codemate.com>
*/
class ExtractvalueFunction extends FunctionNode
{
public $columnName;
public $searchPattern;
public function getSql(\Doctrine\ORM\Query\SqlWalker $sqlWalker)
{
return 'EXTRACTVALUE(' .
$this->columnName->dispatch($sqlWalker) . ',' .
$this->searchPattern->dispatch($sqlWalker) .
')';
}
public function parse(\Doctrine\ORM\Query\Parser $parser)
{
$parser->match(Lexer::T_IDENTIFIER);
$parser->match(Lexer::T_OPEN_PARENTHESIS);
$this->columnName = $parser->StateFieldPathExpression();
$parser->match(Lexer::T_COMMA);
$this->searchPattern = $parser->InParameter();
$parser->match(Lexer::T_CLOSE_PARENTHESIS);
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment