Skip to content

Commit 21d650f

Browse files
authored
Merge pull request #2446 from IonBazan/bugfix/enum-metadata-serialization
Fix EnumReflectionProperty ClassMetadata deserialization
2 parents 4beddcf + 0dba487 commit 21d650f

File tree

2 files changed

+22
-0
lines changed

2 files changed

+22
-0
lines changed

lib/Doctrine/ODM/MongoDB/Mapping/ClassMetadata.php

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2527,6 +2527,11 @@ public function __wakeup()
25272527
foreach ($this->fieldMappings as $field => $mapping) {
25282528
$prop = $this->reflectionService->getAccessibleProperty($mapping['declared'] ?? $this->name, $field);
25292529
assert($prop instanceof ReflectionProperty);
2530+
2531+
if (isset($mapping['enumType'])) {
2532+
$prop = new EnumReflectionProperty($prop, $mapping['enumType']);
2533+
}
2534+
25302535
$this->reflFields[$field] = $prop;
25312536
}
25322537
}

tests/Doctrine/ODM/MongoDB/Tests/Mapping/ClassMetadataTest.php

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@
1313
use Doctrine\ODM\MongoDB\Tests\ClassMetadataTestUtil;
1414
use Doctrine\ODM\MongoDB\Types\Type;
1515
use Doctrine\ODM\MongoDB\Utility\CollectionHelper;
16+
use Doctrine\Persistence\Reflection\EnumReflectionProperty;
1617
use DoctrineGlobal_Article;
1718
use DoctrineGlobal_User;
1819
use Documents\Account;
@@ -207,6 +208,22 @@ public function testEnumTypeFromReflection(): void
207208
self::assertFalse($cm->isNullable('nullableSuit'));
208209
}
209210

211+
/**
212+
* @requires PHP >= 8.1
213+
*/
214+
public function testEnumReflectionPropertySerialization(): void
215+
{
216+
$cm = new ClassMetadata(Card::class);
217+
218+
$cm->mapField(['fieldName' => 'suit']);
219+
self::assertInstanceOf(EnumReflectionProperty::class, $cm->reflFields['suit']);
220+
221+
$serialized = serialize($cm);
222+
$cm = unserialize($serialized);
223+
224+
self::assertInstanceOf(EnumReflectionProperty::class, $cm->reflFields['suit']);
225+
}
226+
210227
/**
211228
* @requires PHP >= 8.1
212229
*/

0 commit comments

Comments
 (0)