Skip to content

Commit

Permalink
Merge pull request doctrine#10698 from greg0ire/move-join-column-fiel…
Browse files Browse the repository at this point in the history
…dnames-down

Move joinColumnFieldNames down the class hierarchy
  • Loading branch information
greg0ire authored May 12, 2023
2 parents caa8041 + 3b88e48 commit 9f60fdc
Show file tree
Hide file tree
Showing 6 changed files with 20 additions and 19 deletions.
4 changes: 0 additions & 4 deletions lib/Doctrine/ORM/Mapping/AssociationMapping.php
Original file line number Diff line number Diff line change
Expand Up @@ -62,9 +62,6 @@ abstract class AssociationMapping implements ArrayAccess

public bool|null $isOnDeleteCascade = null;

/** @var array<string, string>|null */
public array|null $joinColumnFieldNames = null;

/** @var class-string|null */
public string|null $originalClass = null;

Expand Down Expand Up @@ -335,7 +332,6 @@ public function __sleep(): array
'inherited',
'declared',
'cache',
'joinColumnFieldNames',
'originalClass',
'originalField',
] as $stringOrArrayProperty
Expand Down
3 changes: 1 addition & 2 deletions lib/Doctrine/ORM/Mapping/ClassMetadata.php
Original file line number Diff line number Diff line change
Expand Up @@ -1727,11 +1727,10 @@ public function setAssociationOverride(string $fieldName, array $overrideMapping
$mapping['fetch'] = $overrideMapping['fetch'];
}

$mapping['joinColumnFieldNames'] = null;

switch ($mapping['type']) {
case self::ONE_TO_ONE:
case self::MANY_TO_ONE:
$mapping['joinColumnFieldNames'] = [];
$mapping['sourceToTargetKeyColumns'] = [];
break;
case self::MANY_TO_MANY:
Expand Down
4 changes: 4 additions & 0 deletions lib/Doctrine/ORM/Mapping/ToOneOwningSideMapping.php
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,9 @@ abstract class ToOneOwningSideMapping extends OwningSideMapping implements ToOne
/** @var list<JoinColumnMapping> */
public array $joinColumns = [];

/** @var array<string, string> */
public array $joinColumnFieldNames = [];

/**
* @param array<string, mixed> $mappingArray
* @psalm-param array{
Expand Down Expand Up @@ -169,6 +172,7 @@ public function __sleep(): array
return [
...parent::__sleep(),
'joinColumns',
'joinColumnFieldNames',
'sourceToTargetKeyColumns',
'targetToSourceKeyColumns',
];
Expand Down
24 changes: 11 additions & 13 deletions tests/Doctrine/Tests/ORM/Mapping/AssociationMappingTest.php
Original file line number Diff line number Diff line change
Expand Up @@ -23,18 +23,17 @@ public function testItSurvivesSerialization(): void
targetEntity: self::class,
);

$mapping->cascade = ['persist'];
$mapping->fetch = ClassMetadata::FETCH_EAGER;
$mapping->inherited = self::class;
$mapping->declared = self::class;
$mapping->cache = ['usage' => ClassMetadata::CACHE_USAGE_READ_ONLY];
$mapping->id = true;
$mapping->isOnDeleteCascade = true;
$mapping->joinColumnFieldNames = ['foo' => 'bar'];
$mapping->originalClass = self::class;
$mapping->originalField = 'foo';
$mapping->orphanRemoval = true;
$mapping->unique = true;
$mapping->cascade = ['persist'];
$mapping->fetch = ClassMetadata::FETCH_EAGER;
$mapping->inherited = self::class;
$mapping->declared = self::class;
$mapping->cache = ['usage' => ClassMetadata::CACHE_USAGE_READ_ONLY];
$mapping->id = true;
$mapping->isOnDeleteCascade = true;
$mapping->originalClass = self::class;
$mapping->originalField = 'foo';
$mapping->orphanRemoval = true;
$mapping->unique = true;

$resurrectedMapping = unserialize(serialize($mapping));
assert($resurrectedMapping instanceof AssociationMapping);
Expand All @@ -46,7 +45,6 @@ public function testItSurvivesSerialization(): void
self::assertSame(['usage' => ClassMetadata::CACHE_USAGE_READ_ONLY], $resurrectedMapping->cache);
self::assertTrue($resurrectedMapping->id);
self::assertTrue($resurrectedMapping->isOnDeleteCascade);
self::assertSame(['foo' => 'bar'], $resurrectedMapping->joinColumnFieldNames);
self::assertSame(self::class, $resurrectedMapping->originalClass);
self::assertSame('foo', $resurrectedMapping->originalField);
self::assertTrue($resurrectedMapping->orphanRemoval);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -23,13 +23,15 @@ public function testItSurvivesSerialization(): void
);

$mapping->joinColumns = [new JoinColumnMapping('id')];
$mapping->joinColumnFieldNames = ['foo' => 'bar'];
$mapping->sourceToTargetKeyColumns = ['foo' => 'bar'];
$mapping->targetToSourceKeyColumns = ['bar' => 'foo'];

$resurrectedMapping = unserialize(serialize($mapping));
assert($resurrectedMapping instanceof ManyToOneAssociationMapping);

self::assertCount(1, $resurrectedMapping->joinColumns);
self::assertSame(['foo' => 'bar'], $resurrectedMapping->joinColumnFieldNames);
self::assertSame(['foo' => 'bar'], $resurrectedMapping->sourceToTargetKeyColumns);
self::assertSame(['bar' => 'foo'], $resurrectedMapping->targetToSourceKeyColumns);
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -23,13 +23,15 @@ public function testItSurvivesSerialization(): void
);

$mapping->joinColumns = [new JoinColumnMapping('id')];
$mapping->joinColumnFieldNames = ['foo' => 'bar'];
$mapping->sourceToTargetKeyColumns = ['foo' => 'bar'];
$mapping->targetToSourceKeyColumns = ['bar' => 'foo'];

$resurrectedMapping = unserialize(serialize($mapping));
assert($resurrectedMapping instanceof OneToOneOwningSideMapping);

self::assertCount(1, $resurrectedMapping->joinColumns);
self::assertSame(['foo' => 'bar'], $resurrectedMapping->joinColumnFieldNames);
self::assertSame(['foo' => 'bar'], $resurrectedMapping->sourceToTargetKeyColumns);
self::assertSame(['bar' => 'foo'], $resurrectedMapping->targetToSourceKeyColumns);
}
Expand Down

0 comments on commit 9f60fdc

Please sign in to comment.