diff --git a/lib/Doctrine/ORM/Mapping/JoinTableMapping.php b/lib/Doctrine/ORM/Mapping/JoinTableMapping.php index 659b15fcbb7..68d64bedbf2 100644 --- a/lib/Doctrine/ORM/Mapping/JoinTableMapping.php +++ b/lib/Doctrine/ORM/Mapping/JoinTableMapping.php @@ -22,6 +22,9 @@ final class JoinTableMapping implements ArrayAccess /** @var list */ public array $inverseJoinColumns = []; + /** @var array */ + public array $options = []; + public string|null $schema = null; public string|null $name = null; @@ -40,7 +43,7 @@ public static function fromMappingArray(array $mappingArray): self { $mapping = new self(); - foreach (['name', 'quoted', 'schema'] as $key) { + foreach (['name', 'quoted', 'schema', 'options'] as $key) { if (isset($mappingArray[$key])) { $mapping[$key] = $mappingArray[$key]; } @@ -92,7 +95,7 @@ public function __sleep(): array { $serialized = []; - foreach (['joinColumns', 'inverseJoinColumns', 'name', 'schema'] as $stringOrArrayKey) { + foreach (['joinColumns', 'inverseJoinColumns', 'name', 'schema', 'options'] as $stringOrArrayKey) { if ($this->$stringOrArrayKey !== null) { $serialized[] = $stringOrArrayKey; } diff --git a/lib/Doctrine/ORM/Tools/SchemaTool.php b/lib/Doctrine/ORM/Tools/SchemaTool.php index c805e3df1ac..143f63ccbd6 100644 --- a/lib/Doctrine/ORM/Tools/SchemaTool.php +++ b/lib/Doctrine/ORM/Tools/SchemaTool.php @@ -563,10 +563,8 @@ private function gatherRelationsSql( $this->quoteStrategy->getJoinTableName($mapping, $foreignClass, $this->platform), ); - if (isset($joinTable['options'])) { - foreach ($joinTable['options'] as $key => $val) { - $theJoinTable->addOption($key, $val); - } + foreach ($joinTable->options as $key => $val) { + $theJoinTable->addOption($key, $val); } $primaryKeyColumns = []; diff --git a/tests/Doctrine/Tests/ORM/Mapping/JoinTableMappingTest.php b/tests/Doctrine/Tests/ORM/Mapping/JoinTableMappingTest.php index 846605cf9fd..c3c16d7c447 100644 --- a/tests/Doctrine/Tests/ORM/Mapping/JoinTableMappingTest.php +++ b/tests/Doctrine/Tests/ORM/Mapping/JoinTableMappingTest.php @@ -23,6 +23,7 @@ public function testItSurvivesSerialization(): void $mapping->inverseJoinColumns = [new JoinColumnMapping('id')]; $mapping->schema = 'foo'; $mapping->name = 'bar'; + $mapping->options = ['foo' => 'bar']; $resurrectedMapping = unserialize(serialize($mapping)); assert($resurrectedMapping instanceof JoinTableMapping); @@ -32,5 +33,6 @@ public function testItSurvivesSerialization(): void self::assertCount(1, $resurrectedMapping->inverseJoinColumns); self::assertSame('foo', $resurrectedMapping->schema); self::assertSame('bar', $resurrectedMapping->name); + self::assertSame(['foo' => 'bar'], $resurrectedMapping->options); } }