From a72977b33d66c415cc25d2322cf9d1c5cb14a1f9 Mon Sep 17 00:00:00 2001 From: beberlei Date: Tue, 3 Nov 2009 18:33:38 +0000 Subject: [PATCH] [2.0] DDC-109 - Add support for Unique Constraint in OneToMany unidirectional relations --- lib/Doctrine/ORM/Tools/SchemaTool.php | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/lib/Doctrine/ORM/Tools/SchemaTool.php b/lib/Doctrine/ORM/Tools/SchemaTool.php index fe70657d0..8b164813b 100644 --- a/lib/Doctrine/ORM/Tools/SchemaTool.php +++ b/lib/Doctrine/ORM/Tools/SchemaTool.php @@ -338,7 +338,7 @@ class SchemaTool } else if ($mapping->isManyToMany() && $mapping->isOwningSide) { // create join table $joinTableColumns = array(); - $joinTableOptions = array(); + $joinTableOptions = array('primary' => array(), 'uniqueConstraints' => array()); $joinTable = $mapping->getJoinTable(); // Build first FK constraint (relation table => source table) @@ -358,6 +358,10 @@ class SchemaTool $joinTableColumns[$column['name']] = $column; $constraint1['local'][] = $column['name']; $constraint1['foreign'][] = $joinColumn['referencedColumnName']; + + if($joinColumn['unique'] == true) { + $joinTableOptions['uniqueConstraints'][] = array($joinColumn['name']); + } if (isset($joinColumn['onUpdate'])) { $constraint1['onUpdate'] = $joinColumn['onUpdate']; @@ -387,6 +391,10 @@ class SchemaTool $joinTableColumns[$inverseJoinColumn['name']] = $column; $constraint2['local'][] = $inverseJoinColumn['name']; $constraint2['foreign'][] = $inverseJoinColumn['referencedColumnName']; + + if($inverseJoinColumn['unique'] == true) { + $joinTableOptions['uniqueConstraints'][] = array($inverseJoinColumn['name']); + } if (isset($inverseJoinColumn['onUpdate'])) { $constraint2['onUpdate'] = $inverseJoinColumn['onUpdate'];