From 2c6bc430b0cd031688f90900c25de98d5ae813b6 Mon Sep 17 00:00:00 2001
From: Bertrand GAUTHIER <bertrand.gauthier@unicaen.fr>
Date: Mon, 18 Jan 2021 15:34:46 +0100
Subject: [PATCH] Suppression du support (impossible) de la fonction
 REGEXP_LIKE et remplacement par REGEXP_COUNT()

---
 config/module.config.php                                  | 6 +++---
 .../Query/Functions/{RegexpLike.php => RegexpCount.php}   | 8 ++++++--
 2 files changed, 9 insertions(+), 5 deletions(-)
 rename src/UnicaenOracle/ORM/Query/Functions/{RegexpLike.php => RegexpCount.php} (79%)

diff --git a/config/module.config.php b/config/module.config.php
index b8f0eeb..44c707f 100755
--- a/config/module.config.php
+++ b/config/module.config.php
@@ -3,14 +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\RegexpLike;
+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;
@@ -28,7 +28,7 @@ return [
                     'CHR'     => Chr::class,
                     'CONVERT' => Convert::class,
                     'REPLACE' => Replace::class,
-                    'REGEXP_LIKE' => RegexpLike::class,
+                    'REGEXP_COUNT' => RegexpCount::class,
 
                     // fonctions du package PL/SQL "UNICAEN_ORACLE" (cf. "../data/package.sql")
                     'compriseEntre' => CompriseEntre::class,
diff --git a/src/UnicaenOracle/ORM/Query/Functions/RegexpLike.php b/src/UnicaenOracle/ORM/Query/Functions/RegexpCount.php
similarity index 79%
rename from src/UnicaenOracle/ORM/Query/Functions/RegexpLike.php
rename to src/UnicaenOracle/ORM/Query/Functions/RegexpCount.php
index 4cdc4b3..f97f148 100644
--- a/src/UnicaenOracle/ORM/Query/Functions/RegexpLike.php
+++ b/src/UnicaenOracle/ORM/Query/Functions/RegexpCount.php
@@ -7,7 +7,11 @@ use Doctrine\ORM\Query\AST\Functions\FunctionNode;
 use Doctrine\ORM\Query\Parser;
 use Doctrine\ORM\Query\SqlWalker;
 
-class RegexpLike extends FunctionNode
+/**
+ * Class RegexpCount
+ * @see https://stackoverflow.com/questions/32052563/doctrine-and-oracle-regexp-like
+ */
+class RegexpCount extends FunctionNode
 {
     public $field;
     public $posixPattern;
@@ -24,7 +28,7 @@ class RegexpLike extends FunctionNode
 
     public function getSql(SqlWalker $sqlWalker)
     {
-        return sprintf('REGEXP_LIKE(%s, %s)', 
+        return sprintf('REGEXP_COUNT(%s, %s)',
                 $this->field->dispatch($sqlWalker), 
                 $this->posixPattern->dispatch($sqlWalker));
     }
-- 
GitLab