1
0
mirror of synced 2025-02-09 00:39:25 +03:00

Exporters should only inspect joinColumns for owning side in bi-directional OneToOne

rebased commits:

- Added test case for bi-directional OneToOne in YamlExporter
- Only inspect joinColumns for owning side in bi-directional OneToOne in YamlExporter
- Adding bi-directional test case without joinColumn to XmlExporter test
- Same testcase also applied to PhpExporter
- Fixing bi-directional issue in PhpExporter when inspecting joinColumns index
- Implemented @Ocramius suggestions
This commit is contained in:
Thomas Ploch 2016-06-07 17:33:29 +02:00 committed by Marco Pivetta
parent 9a393ccba7
commit a5eb0f2e82
5 changed files with 24 additions and 2 deletions

View File

@ -117,7 +117,7 @@ class PhpExporter extends AbstractExporter
$oneToOneMappingArray = array(
'mappedBy' => $associationMapping['mappedBy'],
'inversedBy' => $associationMapping['inversedBy'],
'joinColumns' => $associationMapping['joinColumns'],
'joinColumns' => $associationMapping['isOwningSide'] ? $associationMapping['joinColumns'] : [],
'orphanRemoval' => $associationMapping['orphanRemoval'],
);

View File

@ -163,7 +163,7 @@ class YamlExporter extends AbstractExporter
}
if ($associationMapping['type'] & ClassMetadataInfo::TO_ONE) {
$joinColumns = $associationMapping['joinColumns'];
$joinColumns = $associationMapping['isOwningSide'] ? $associationMapping['joinColumns'] : [];
$newJoinColumns = array();
foreach ($joinColumns as $joinColumn) {

View File

@ -57,6 +57,18 @@ $metadata->mapOneToOne(array(
'orphanRemoval' => true,
'fetch' => ClassMetadataInfo::FETCH_EAGER,
));
$metadata->mapOneToOne(array(
'fieldName' => 'cart',
'targetEntity' => 'Doctrine\\Tests\\ORM\\Tools\\Export\\Cart',
'mappedBy' => 'user',
'cascade' =>
array(
0 => 'persist',
),
'inversedBy' => NULL,
'orphanRemoval' => false,
'fetch' => ClassMetadataInfo::FETCH_EAGER,
));
$metadata->mapOneToMany(array(
'fieldName' => 'phonenumbers',
'targetEntity' => 'Doctrine\\Tests\\ORM\\Tools\\Export\\Phonenumber',

View File

@ -30,6 +30,12 @@
<join-column name="address_id" referenced-column-name="id" on-delete="CASCADE" on-update="CASCADE"/>
</one-to-one>
<one-to-one field="cart" target-entity="Doctrine\Tests\ORM\Tools\Export\Cart" mapped-by="user">
<cascade>
<cascade-remove/>
</cascade>
</one-to-one>
<many-to-one field="mainGroup" target-entity="Doctrine\Tests\ORM\Tools\Export\Group" />
<one-to-many field="phonenumbers" target-entity="Doctrine\Tests\ORM\Tools\Export\Phonenumber" mapped-by="user" orphan-removal="true" fetch="LAZY">

View File

@ -30,6 +30,10 @@ Doctrine\Tests\ORM\Tools\Export\User:
inversedBy: user
orphanRemoval: true
fetch: EAGER
cart:
targetEntity: Doctrine\Tests\ORM\Tools\Export\Cart
mappedBy: user
cascade: [ remove ]
manyToOne:
mainGroup:
targetEntity: Doctrine\Tests\ORM\Tools\Export\Group