support arrêt de each()

This commit is contained in:
Jephté Clain 2025-07-15 16:50:24 +04:00
parent 6238e0b9ff
commit f221342c09
2 changed files with 6 additions and 3 deletions

View File

@ -366,13 +366,14 @@ class CapacitorChannel implements ITransactor {
} }
/** /**
* méthode appelée lors du parcours des éléments avec * méthode appelée lors du parcours des éléments avec {@link Capacitor::each()}
* {@link Capacitor::each()}
* *
* @param ?array $row la ligne courante. l'élément courant est accessible via * @param ?array $row la ligne courante. l'élément courant est accessible via
* $row["item"] * $row["item"]
* @return ?array le cas échéant, un tableau non null utilisé pour mettre à * @return ?array le cas échéant, un tableau non null utilisé pour mettre à
* jour la ligne courante * jour la ligne courante
* Retourner [false] pour arrêter le parcours des éléments (la ligne courante
* ainsi que les autres lignes ne sont plus mise à jour)
* *
* - Il est possible de mettre à jour $item en le retourant avec la clé "item" * - Il est possible de mettre à jour $item en le retourant avec la clé "item"
* - La clé primaire (il s'agit généralement de "id_") ne peut pas être * - La clé primaire (il s'agit généralement de "id_") ne peut pas être

View File

@ -661,7 +661,9 @@ abstract class CapacitorStorage {
foreach ($rows as $row) { foreach ($rows as $row) {
$rowIds = $this->getRowIds($channel, $row); $rowIds = $this->getRowIds($channel, $row);
$updates = $onEach->invoke([$row, ...$args]); $updates = $onEach->invoke([$row, ...$args]);
if (is_array($updates) && $updates) { if ($updates === [false]) {
break;
} elseif ($updates !== null) {
if (!array_key_exists("modified_", $updates)) { if (!array_key_exists("modified_", $updates)) {
$updates["modified_"] = date("Y-m-d H:i:s"); $updates["modified_"] = date("Y-m-d H:i:s");
} }