Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 3 additions & 0 deletions CHANGELOG
Original file line number Diff line number Diff line change
@@ -1,3 +1,6 @@
3.12.1 (unreleased):
* Fix Hydrator: disable identity map now prevent storing entities

3.12.0 (2025-04-17):
* add __debuginfo() in NotifyInterface to reduce context when dumping an entity
* Driver now supports reconnect, useful in forked processes
Expand Down
25 changes: 8 additions & 17 deletions src/Ting/Repository/Hydrator.php
Original file line number Diff line number Diff line change
Expand Up @@ -329,22 +329,13 @@ function (Metadata $metadata) use ($column, &$result): void {
}
}

if ($id !== '') {
$ref = $column['table'] . '-' . $id;
if (isset($this->references[$ref]) === true) {

// This entity was already created and stored into references
if ($this->identityMap === false) {
// If identityMap is disabled, it clones the object and reset UUID
$result[$column['table']] = clone $this->references[$ref];
} else {
// If identityMap is enabled, it uses the same object
$result[$column['table']] = $this->references[$ref];
}
$validEntities[$column['table']] = true;
$fromReferences[$column['table']] = true;
continue;
}
if ($id !== '' && $this->identityMap && isset($this->references[$ref = $column['table'] . '-' . $id]) === true) {
// This entity was already created and stored into references
// If identityMap is enabled, reuse the same object
$result[$column['table']] = $this->references[$ref];
$validEntities[$column['table']] = true;
$fromReferences[$column['table']] = true;
continue;
}

if (isset($result[$column['table']]) === false) {
Expand Down Expand Up @@ -416,7 +407,7 @@ function (Metadata $metadata) use ($column, &$result): void {
}
}

if (isset($this->references[$ref]) === false) {
if (isset($this->references[$ref]) === false && $this->identityMap) {
$this->references[$ref] = $entity;
}
}
Expand Down