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; + } } } }