Loading .gitlab-ci.yml +2 −1 Original line number Diff line number Diff line Loading @@ -19,4 +19,5 @@ cache: update-satis: stage: publish script: - update-satis - curl https://gest.unicaen.fr/packagist/update config/module.config.php +3 −1 Original line number Diff line number Diff line Loading @@ -3,13 +3,14 @@ namespace UnicaenOracle; use Doctrine\DBAL\Driver\OCI8\Driver as OCI8; use UnicaenOracle\ORM\Query\Functions\PasHistorise; use UnicaenOracle\Controller\Factory\IndexControllerFactory; use UnicaenOracle\Controller\IndexController; use UnicaenOracle\DBAL\Event\Listeners\OracleSessionInit; use UnicaenOracle\ORM\Query\Functions\Chr; use UnicaenOracle\ORM\Query\Functions\CompriseEntre; use UnicaenOracle\ORM\Query\Functions\Convert; use UnicaenOracle\ORM\Query\Functions\PasHistorise; use UnicaenOracle\ORM\Query\Functions\RegexpCount; use UnicaenOracle\ORM\Query\Functions\Replace; use UnicaenOracle\Service\DataService; use UnicaenOracle\Service\SchemaService; Loading @@ -27,6 +28,7 @@ return [ 'CHR' => Chr::class, 'CONVERT' => Convert::class, 'REPLACE' => Replace::class, 'REGEXP_COUNT' => RegexpCount::class, // fonctions du package PL/SQL "UNICAEN_ORACLE" (cf. "../data/package.sql") 'compriseEntre' => CompriseEntre::class, Loading src/UnicaenOracle/ORM/Query/Functions/RegexpCount.php 0 → 100644 +35 −0 Original line number Diff line number Diff line <?php namespace UnicaenOracle\ORM\Query\Functions; use Doctrine\ORM\Query\Lexer; use Doctrine\ORM\Query\AST\Functions\FunctionNode; use Doctrine\ORM\Query\Parser; use Doctrine\ORM\Query\SqlWalker; /** * Class RegexpCount * @see https://stackoverflow.com/questions/32052563/doctrine-and-oracle-regexp-like */ class RegexpCount extends FunctionNode { public $field; public $posixPattern; public function parse(Parser $parser) { $parser->match(Lexer::T_IDENTIFIER); $parser->match(Lexer::T_OPEN_PARENTHESIS); $this->field = $parser->StringPrimary(); $parser->match(Lexer::T_COMMA); $this->posixPattern = $parser->StringPrimary(); $parser->match(Lexer::T_CLOSE_PARENTHESIS); } public function getSql(SqlWalker $sqlWalker) { return sprintf('REGEXP_COUNT(%s, %s)', $this->field->dispatch($sqlWalker), $this->posixPattern->dispatch($sqlWalker)); } } No newline at end of file Loading
.gitlab-ci.yml +2 −1 Original line number Diff line number Diff line Loading @@ -19,4 +19,5 @@ cache: update-satis: stage: publish script: - update-satis - curl https://gest.unicaen.fr/packagist/update
config/module.config.php +3 −1 Original line number Diff line number Diff line Loading @@ -3,13 +3,14 @@ namespace UnicaenOracle; use Doctrine\DBAL\Driver\OCI8\Driver as OCI8; use UnicaenOracle\ORM\Query\Functions\PasHistorise; use UnicaenOracle\Controller\Factory\IndexControllerFactory; use UnicaenOracle\Controller\IndexController; use UnicaenOracle\DBAL\Event\Listeners\OracleSessionInit; use UnicaenOracle\ORM\Query\Functions\Chr; use UnicaenOracle\ORM\Query\Functions\CompriseEntre; use UnicaenOracle\ORM\Query\Functions\Convert; use UnicaenOracle\ORM\Query\Functions\PasHistorise; use UnicaenOracle\ORM\Query\Functions\RegexpCount; use UnicaenOracle\ORM\Query\Functions\Replace; use UnicaenOracle\Service\DataService; use UnicaenOracle\Service\SchemaService; Loading @@ -27,6 +28,7 @@ return [ 'CHR' => Chr::class, 'CONVERT' => Convert::class, 'REPLACE' => Replace::class, 'REGEXP_COUNT' => RegexpCount::class, // fonctions du package PL/SQL "UNICAEN_ORACLE" (cf. "../data/package.sql") 'compriseEntre' => CompriseEntre::class, Loading
src/UnicaenOracle/ORM/Query/Functions/RegexpCount.php 0 → 100644 +35 −0 Original line number Diff line number Diff line <?php namespace UnicaenOracle\ORM\Query\Functions; use Doctrine\ORM\Query\Lexer; use Doctrine\ORM\Query\AST\Functions\FunctionNode; use Doctrine\ORM\Query\Parser; use Doctrine\ORM\Query\SqlWalker; /** * Class RegexpCount * @see https://stackoverflow.com/questions/32052563/doctrine-and-oracle-regexp-like */ class RegexpCount extends FunctionNode { public $field; public $posixPattern; public function parse(Parser $parser) { $parser->match(Lexer::T_IDENTIFIER); $parser->match(Lexer::T_OPEN_PARENTHESIS); $this->field = $parser->StringPrimary(); $parser->match(Lexer::T_COMMA); $this->posixPattern = $parser->StringPrimary(); $parser->match(Lexer::T_CLOSE_PARENTHESIS); } public function getSql(SqlWalker $sqlWalker) { return sprintf('REGEXP_COUNT(%s, %s)', $this->field->dispatch($sqlWalker), $this->posixPattern->dispatch($sqlWalker)); } } No newline at end of file