Skip to content
Snippets Groups Projects
Commit cb7e5bc1 authored by Laurent Lecluse's avatar Laurent Lecluse
Browse files

Possibilité d'utiliser Connection de Doctrine pour faire des requêtes en...

Possibilité d'utiliser Connection de Doctrine pour faire des requêtes en modification (pb Oracle gestion des transactions)
parent eae9089a
No related branches found
No related tags found
No related merge requests found
Pipeline #35064 passed
1.1.0 (30/01/2025)
------------------
- Possibilité d'utiliser Connection de Doctrine pour faire des requêtes en modification (pb Oracle gestion des transactions)
1.0.6 (05/12/2024)
------------------
......
......@@ -2,6 +2,8 @@
namespace Unicaen\BddAdmin;
use Doctrine\DBAL\Connection;
use Doctrine\DBAL\Types\Types;
use Unicaen\BddAdmin\Data\DataManager;
use Unicaen\BddAdmin\Ddl\Ddl;
use Unicaen\BddAdmin\Ddl\DdlDiff;
......@@ -127,6 +129,8 @@ class Bdd
/** @var array|Bdd[] */
private array $bdds = [];
private ?Connection $doctrineConnection = null;
private array $config;
private ?DriverInterface $driver = null;
......@@ -177,6 +181,21 @@ class Bdd
public function getDoctrineConnection(): ?Connection
{
return $this->doctrineConnection;
}
public function setDoctrineConnection(?Connection $doctrineConnection): Bdd
{
$this->doctrineConnection = $doctrineConnection;
return $this;
}
/**
* Hack pour initialiser une classe à partir d'un container respectant Psr\Container\ContainerInterface
* Si la classe n'est pas connue du container, alors elle est instanciée à l'aide de new
......@@ -279,7 +298,11 @@ class Bdd
public function beginTransaction(): self
{
if ($this->doctrineConnection) {
$this->doctrineConnection->beginTransaction();
} else {
$this->driver->beginTransaction();
}
return $this;
}
......@@ -288,7 +311,11 @@ class Bdd
public function commitTransaction(): self
{
if ($this->doctrineConnection) {
$this->doctrineConnection->commit();
} else {
$this->driver->commitTransaction();
}
return $this;
}
......@@ -297,7 +324,11 @@ class Bdd
public function rollbackTransaction(): self
{
if ($this->doctrineConnection) {
$this->doctrineConnection->rollback();
} else {
$this->driver->rollbackTransaction();
}
return $this;
}
......@@ -306,7 +337,36 @@ class Bdd
public function exec(string $sql, array $params = [], array $types = []): self
{
if ($this->doctrineConnection) {
foreach ($types as $ti => $tv) {
switch ($tv) {
case self::TYPE_INT:
$types[$ti] = Types::INTEGER;
break;
case self::TYPE_BOOL:
$types[$ti] = Types::BOOLEAN;
break;
case self::TYPE_FLOAT:
$types[$ti] = Types::FLOAT;
break;
case self::TYPE_STRING:
$types[$ti] = Types::STRING;
break;
case self::TYPE_DATE:
$types[$ti] = Types::DATETIME_IMMUTABLE;
break;
case self::TYPE_BLOB:
$types[$ti] = Types::BLOB;
break;
case self::TYPE_CLOB:
$types[$ti] = Types::TEXT;
break;
}
}
$this->doctrineConnection->executeStatement($sql, $params);
} else {
$this->driver->exec($sql, $params, $types);
}
return $this;
}
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment