From 720ccb5ae6684d23213cb918b46284bb8076fdc2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Laurent=20L=C3=A9cluse?= <laurent.lecluse@unicaen.fr> Date: Wed, 21 Aug 2024 14:24:53 +0200 Subject: [PATCH] =?UTF-8?q?-=20Ajout=20de=20la=20m=C3=A9thode=20Table->get?= =?UTF-8?q?LastInsertId=20permettant=20de=20retourner=20la=20derni=C3=A8re?= =?UTF-8?q?=20valeur=20de=20s=C3=A9quence=20utilis=C3=A9e=20pour=20peupler?= =?UTF-8?q?=20un=20ID=20lors=20d'un=20INSERT=20-=20Nouvelle=20option=20"re?= =?UTF-8?q?turn-insert-data"=20pour=20Table->merge,=20permettant=20de=20re?= =?UTF-8?q?tourner=20dans=20"insert-data"=20les=20donn=C3=A9es=20ins=C3=A9?= =?UTF-8?q?r=C3=A9es=20pour=20pouvoir=20r=C3=A9cup=C3=A9rer=20les=20ID=20p?= =?UTF-8?q?eupl=C3=A9s=20=C3=A0=20partir=20des=20s=C3=A9quences?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- CHANGELOG.md | 2 ++ src/Table.php | 20 +++++++++++++++++++- 2 files changed, 21 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index f1ca4fe..c9c4db1 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -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 +- 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) diff --git a/src/Table.php b/src/Table.php index 36cc9e0..9b339a5 100644 --- a/src/Table.php +++ b/src/Table.php @@ -25,6 +25,8 @@ class Table */ private $transformCache = []; + private ?int $lastInsertId = null; + /** @@ -295,6 +297,13 @@ class Table + public function getLastInsertId(): ?int + { + return $this->lastInsertId; + } + + + /** * @param array $data * @param array $options @@ -309,7 +318,8 @@ class Table $bdd = $this->getBdd(); 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'); @@ -424,12 +434,17 @@ class Table 'soft-delete' => false, 'insert' => true, 'update' => true, + 'return-insert-data' => false, 'update-cols' => [], 'update-ignore-cols' => [], 'update-only-null' => [], ]; $options = array_merge($defaultOptions, $options); + if ($options['return-insert-data']){ + $result['insert-data'] = []; + } + $ddl = $this->getDdl(); $bdd = $this->getBdd(); @@ -519,6 +534,9 @@ class Table if ($options['insert']) { $this->insert($n); $result['insert']++; + if ($options['return-insert-data']){ + $result['insert-data'][] = $n; + } } } -- GitLab