From 1262bd6086517c13fbf3d0f38471d9346014a356 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?H=C3=A9ctor=20Franco?= Date: Tue, 5 May 2026 13:48:43 +0200 Subject: [PATCH] Enhance DoctrineORMListener for compatibility with Doctrine ORM 3.x - Updated field mapping logic to support both legacy array mapping and the new FieldMapping object introduced in Doctrine ORM 3.x. - Ensured backward compatibility with existing implementations while preparing for future ORM 4.0 changes. --- Storage/Listener/DoctrineORMListener.php | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) diff --git a/Storage/Listener/DoctrineORMListener.php b/Storage/Listener/DoctrineORMListener.php index c28adb38..87a7cc8c 100644 --- a/Storage/Listener/DoctrineORMListener.php +++ b/Storage/Listener/DoctrineORMListener.php @@ -25,9 +25,18 @@ public function loadClassMetadata(LoadClassMetadataEventArgs $eventArgs) foreach ($metadata->getFieldNames() as $name) { $fieldMapping = $metadata->getFieldMapping($name); - if (isset($fieldMapping['type']) && 'string' === $fieldMapping['type']) { - $fieldMapping['length'] = 191; - $metadata->fieldMappings[$name] = $fieldMapping; + if (\is_array($fieldMapping)) { + // Doctrine ORM 2.x / legacy array mapping + if (isset($fieldMapping['type']) && 'string' === $fieldMapping['type']) { + $fieldMapping['length'] = 191; + $metadata->fieldMappings[$name] = $fieldMapping; + } + } else { + // Doctrine ORM 3+: FieldMapping object — avoid deprecated ArrayAccess (removed in ORM 4.0) + if ('string' === $fieldMapping->type) { + $fieldMapping->length = 191; + $metadata->fieldMappings[$name] = $fieldMapping; + } } } }