diff --git a/src/Configuration.php b/src/Configuration.php index 9280cdc189..06be879264 100644 --- a/src/Configuration.php +++ b/src/Configuration.php @@ -723,4 +723,14 @@ public function getEagerFetchBatchSize(): int { return $this->attributes['fetchModeSubselectBatchSize'] ?? 100; } + + public function setDefaultStringTypeSchemaLength(int|null $length = null): void + { + $this->attributes['defaultStringTypeSchemaLength'] = $length; + } + + public function getDefaultStringTypeSchemaLength(): ?int + { + return $this->attributes['defaultStringTypeSchemaLength'] ?? 255; + } } diff --git a/src/Tools/SchemaTool.php b/src/Tools/SchemaTool.php index c20d5b05fa..c301ecc383 100644 --- a/src/Tools/SchemaTool.php +++ b/src/Tools/SchemaTool.php @@ -409,7 +409,7 @@ private function addDiscriminatorColumnDefinition(ClassMetadata $class, Table $t if (strtolower($discrColumn->type) === 'string' && ! isset($discrColumn->length)) { $discrColumn->type = 'string'; - $discrColumn->length = 255; + $discrColumn->length = $this->em->getConfiguration()->getDefaultStringTypeSchemaLength(); } $options = [ @@ -456,6 +456,7 @@ private function gatherColumn( $options = []; $options['length'] = $mapping->length ?? null; + $options['notnull'] = isset($mapping->nullable) ? ! $mapping->nullable : true; if ($class->isInheritanceTypeSingleTable() && $class->parentClasses) { $options['notnull'] = false; @@ -465,7 +466,7 @@ private function gatherColumn( $options['platformOptions']['version'] = $class->isVersioned && $class->versionField === $mapping->fieldName; if (strtolower($columnType) === 'string' && $options['length'] === null) { - $options['length'] = 255; + $options['length'] = $this->em->getConfiguration()->getDefaultStringTypeSchemaLength(); } if (isset($mapping->precision)) {