Skip to content

Commit 9431a37

Browse files
committed
Merge branch '6.4' into 7.2
* 6.4: [TwigBridge] Fix `ModuleNode` call in `TwigNodeProvider` fix compatibility with Doctrine ORM 4 Fix CS
2 parents 95bc5dd + 7205dbc commit 9431a37

File tree

2 files changed

+20
-4
lines changed

2 files changed

+20
-4
lines changed

Tests/Validator/Constraints/UniqueEntityValidatorTest.php

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@
1616
use Doctrine\ORM\EntityRepository;
1717
use Doctrine\ORM\Mapping\ClassMetadata;
1818
use Doctrine\ORM\Mapping\ClassMetadataInfo;
19+
use Doctrine\ORM\Mapping\PropertyAccessors\RawValuePropertyAccessor;
1920
use Doctrine\ORM\Tools\SchemaTool;
2021
use Doctrine\Persistence\ManagerRegistry;
2122
use Doctrine\Persistence\ObjectManager;
@@ -132,11 +133,21 @@ class_exists(ClassMetadataInfo::class) ? ClassMetadataInfo::class : ClassMetadat
132133
->willReturn(true)
133134
;
134135
$refl = $this->createMock(\ReflectionProperty::class);
136+
$refl
137+
->method('getName')
138+
->willReturn('name')
139+
;
135140
$refl
136141
->method('getValue')
137142
->willReturn(true)
138143
;
139-
$classMetadata->reflFields = ['name' => $refl];
144+
145+
if (property_exists(ClassMetadata::class, 'propertyAccessors')) {
146+
$classMetadata->propertyAccessors['name'] = RawValuePropertyAccessor::fromReflectionProperty($refl);
147+
} else {
148+
$classMetadata->reflFields = ['name' => $refl];
149+
}
150+
140151
$em->expects($this->any())
141152
->method('getClassMetadata')
142153
->willReturn($classMetadata)

Validator/Constraints/UniqueEntityValidator.php

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@
1111

1212
namespace Symfony\Bridge\Doctrine\Validator\Constraints;
1313

14+
use Doctrine\ORM\Mapping\ClassMetadata as OrmClassMetadata;
1415
use Doctrine\ORM\Mapping\MappingException as ORMMappingException;
1516
use Doctrine\Persistence\ManagerRegistry;
1617
use Doctrine\Persistence\Mapping\ClassMetadata;
@@ -287,9 +288,13 @@ private function getFieldValues(mixed $object, ClassMetadata $class, array $fiel
287288
throw new ConstraintDefinitionException(\sprintf('The field "%s" is not a property of class "%s".', $fieldName, $objectClass));
288289
}
289290

290-
$fieldValues[$entityFieldName] = $isValueEntity && $object instanceof ($class->getName())
291-
? $class->reflFields[$fieldName]->getValue($object)
292-
: $this->getPropertyValue($objectClass, $fieldName, $object);
291+
if ($isValueEntity && $object instanceof ($class->getName()) && property_exists(OrmClassMetadata::class, 'propertyAccessors')) {
292+
$fieldValues[$entityFieldName] = $class->propertyAccessors[$fieldName]->getValue($object);
293+
} elseif ($isValueEntity && $object instanceof ($class->getName())) {
294+
$fieldValues[$entityFieldName] = $class->reflFields[$fieldName]->getValue($object);
295+
} else {
296+
$fieldValues[$entityFieldName] = $this->getPropertyValue($objectClass, $fieldName, $object);
297+
}
293298
}
294299

295300
return $fieldValues;

0 commit comments

Comments
 (0)