|
|
@@ -437,16 +437,16 @@ class SchemaSnippetsMaker
|
|
|
$options['targetEntity'] = $this->entityUtils->getEntityNameFromFullName($type['targetEntity']) . '::class';
|
|
|
}
|
|
|
|
|
|
- if (isset($type['inversedBy'])) {
|
|
|
- $options['inversedBy'] = $type['inversedBy'];
|
|
|
- }
|
|
|
-
|
|
|
if (isset($type['cascade'])) {
|
|
|
$options['cascade'] = $type['cascade'];
|
|
|
} else {
|
|
|
$options['cascade'] = ['persist'];
|
|
|
}
|
|
|
|
|
|
+ if (isset($type['inversedBy'])) {
|
|
|
+ $options['inversedBy'] = $type['inversedBy'];
|
|
|
+ }
|
|
|
+
|
|
|
if (isset($type['orphanRemoval']) && ($type['type'] === ClassMetadataInfo::ONE_TO_MANY || $type['type'] === ClassMetadataInfo::MANY_TO_MANY)) {
|
|
|
$options['orphanRemoval'] = $type['orphanRemoval'];
|
|
|
}
|
|
|
@@ -460,8 +460,31 @@ class SchemaSnippetsMaker
|
|
|
|
|
|
$prop->addAttribute($relationClassNames[$type['type']], $options);
|
|
|
|
|
|
- if ($type['type'] === ClassMetadataInfo::MANY_TO_ONE) {
|
|
|
- $prop->addAttribute(JoinColumn::class, ['referencedColumnName' => 'id', 'nullable' => true, 'onDelete' => 'SET NULL']);
|
|
|
+ if (isset($type['joinColumns'])) {
|
|
|
+ foreach ($type['joinColumns'] as $joinColDefinition) {
|
|
|
+ $attributeOptions = [];
|
|
|
+
|
|
|
+ if ($joinColDefinition['name'] !== $type['fieldName'] . '_id') {
|
|
|
+ $attributeOptions['name'] = $type['fieldName'] . '_id';
|
|
|
+ }
|
|
|
+ if ($joinColDefinition['unique'] === true) {
|
|
|
+ $attributeOptions['unique'] = true;
|
|
|
+ }
|
|
|
+ if ($joinColDefinition['nullable'] === false) {
|
|
|
+ $attributeOptions['nullable'] = false;
|
|
|
+ }
|
|
|
+ if ($joinColDefinition['onDelete'] !== null) {
|
|
|
+ $attributeOptions['onDelete'] = $joinColDefinition['onDelete'];
|
|
|
+ }
|
|
|
+ if ($joinColDefinition['columnDefinition'] !== null) {
|
|
|
+ $attributeOptions['referencedColumnName'] = $joinColDefinition['columnDefinition'];
|
|
|
+ }
|
|
|
+ if ($joinColDefinition['referencedColumnName'] !== 'id') {
|
|
|
+ $attributeOptions['referencedColumnName'] = $joinColDefinition['referencedColumnName'];
|
|
|
+ }
|
|
|
+
|
|
|
+ $prop->addAttribute(JoinColumn::class, $attributeOptions);
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
return $prop;
|