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

- Ajout de la méthode Table->getLastInsertId permettant de retourner la...

- Ajout de la méthode Table->getLastInsertId permettant de retourner la dernière valeur de séquence utilisée pour peupler un ID lors d'un INSERT
- Nouvelle option "return-insert-data" pour Table->merge, permettant de retourner dans "insert-data" les données insérées pour pouvoir récupérer les ID peuplés à partir des séquences
parent f9ea7dcf
No related branches found
No related tags found
No related merge requests found
...@@ -2,6 +2,8 @@ ...@@ -2,6 +2,8 @@
------------------ ------------------
- [Fix] Pour Oracle, la recherche des séquences des tables fonctionne pour les tables & séquences de plus de 30 caractères - [Fix] Pour Oracle, la recherche des séquences des tables fonctionne pour les tables & séquences de plus de 30 caractères
- Ajout de la méthode Table->getLastInsertId permettant de retourner la dernière valeur de séquence utilisée pour peupler un ID lors d'un INSERT
- Nouvelle option "return-insert-data" pour Table->merge, permettant de retourner dans "insert-data" les données insérées pour pouvoir récupérer les ID peuplés à partir des séquences
0.9.7 (19/07/2024) 0.9.7 (19/07/2024)
......
...@@ -25,6 +25,8 @@ class Table ...@@ -25,6 +25,8 @@ class Table
*/ */
private $transformCache = []; private $transformCache = [];
private ?int $lastInsertId = null;
/** /**
...@@ -295,6 +297,13 @@ class Table ...@@ -295,6 +297,13 @@ class Table
public function getLastInsertId(): ?int
{
return $this->lastInsertId;
}
/** /**
* @param array $data * @param array $data
* @param array $options * @param array $options
...@@ -309,7 +318,8 @@ class Table ...@@ -309,7 +318,8 @@ class Table
$bdd = $this->getBdd(); $bdd = $this->getBdd();
if (!isset($data['ID']) && $this->hasId() && $this->hasSequence()) { if (!isset($data['ID']) && $this->hasId() && $this->hasSequence()) {
$data['ID'] = $this->getBdd()->sequence()->nextVal($this->ddl['sequence']); $this->lastInsertId = $this->getBdd()->sequence()->nextVal($this->ddl['sequence']);
$data['ID'] = $this->lastInsertId;
} }
$histoUserId = (int)$bdd->getOption('histo-user-id'); $histoUserId = (int)$bdd->getOption('histo-user-id');
...@@ -424,12 +434,17 @@ class Table ...@@ -424,12 +434,17 @@ class Table
'soft-delete' => false, 'soft-delete' => false,
'insert' => true, 'insert' => true,
'update' => true, 'update' => true,
'return-insert-data' => false,
'update-cols' => [], 'update-cols' => [],
'update-ignore-cols' => [], 'update-ignore-cols' => [],
'update-only-null' => [], 'update-only-null' => [],
]; ];
$options = array_merge($defaultOptions, $options); $options = array_merge($defaultOptions, $options);
if ($options['return-insert-data']){
$result['insert-data'] = [];
}
$ddl = $this->getDdl(); $ddl = $this->getDdl();
$bdd = $this->getBdd(); $bdd = $this->getBdd();
...@@ -519,6 +534,9 @@ class Table ...@@ -519,6 +534,9 @@ class Table
if ($options['insert']) { if ($options['insert']) {
$this->insert($n); $this->insert($n);
$result['insert']++; $result['insert']++;
if ($options['return-insert-data']){
$result['insert-data'][] = $n;
}
} }
} }
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment