Skip to content

Commit

Permalink
[GH-6394] Bugfix: BasicEntityPersister::update used wrong identifiers…
Browse files Browse the repository at this point in the history
… for version assignment.
  • Loading branch information
beberlei committed Dec 8, 2020
1 parent 66a95ea commit 59dadf6
Show file tree
Hide file tree
Showing 2 changed files with 3 additions and 5 deletions.
Expand Up @@ -394,7 +394,7 @@ public function update($entity)
$this->updateTable($entity, $quotedTableName, $data, $isVersioned);

if ($isVersioned) {
$id = $this->em->getUnitOfWork()->getEntityIdentifier($entity);
$id = $this->class->getIdentifierValues($entity);

$this->assignDefaultVersionValue($entity, $id);
}
Expand Down
6 changes: 2 additions & 4 deletions lib/Doctrine/ORM/Utility/IdentifierFlattener.php
Expand Up @@ -71,15 +71,13 @@ public function flattenIdentifier(ClassMetadata $class, array $id)
$flatId = [];

foreach ($class->identifier as $field) {
if (isset($class->associationMappings[$field]) && isset($id[$field])) {
if (isset($class->associationMappings[$field]) && isset($id[$field]) && is_object($id[$field])) {
/* @var $targetClassMetadata ClassMetadata */
$targetClassMetadata = $this->metadataFactory->getMetadataFor(
$class->associationMappings[$field]['targetEntity']
);

if (!is_object($id[$field])) {
$associatedId = [$id[$field]];
} elseif ($this->unitOfWork->isInIdentityMap($id[$field])) {
if ($this->unitOfWork->isInIdentityMap($id[$field])) {
$associatedId = $this->flattenIdentifier($targetClassMetadata, $this->unitOfWork->getEntityIdentifier($id[$field]));
} else {
$associatedId = $this->flattenIdentifier($targetClassMetadata, $targetClassMetadata->getIdentifierValues($id[$field]));
Expand Down

0 comments on commit 59dadf6

Please sign in to comment.