diff --git a/doctrine-mapping.xsd b/doctrine-mapping.xsd
index 2dca26257..a6440a2e8 100644
--- a/doctrine-mapping.xsd
+++ b/doctrine-mapping.xsd
@@ -320,11 +320,11 @@
+
-
@@ -338,12 +338,12 @@
+
-
diff --git a/lib/Doctrine/ORM/Mapping/Driver/AnnotationDriver.php b/lib/Doctrine/ORM/Mapping/Driver/AnnotationDriver.php
index 89d215a3a..d68204058 100644
--- a/lib/Doctrine/ORM/Mapping/Driver/AnnotationDriver.php
+++ b/lib/Doctrine/ORM/Mapping/Driver/AnnotationDriver.php
@@ -107,8 +107,8 @@ class AnnotationDriver extends AbstractAnnotationDriver
$index['flags'] = $indexAnnot->flags;
}
- if (! empty($indexAnnot->where)) {
- $index['where'] = $indexAnnot->where;
+ if (! empty($indexAnnot->options)) {
+ $index['options'] = $indexAnnot->options;
}
if ( ! empty($indexAnnot->name)) {
@@ -122,9 +122,9 @@ class AnnotationDriver extends AbstractAnnotationDriver
if ($tableAnnot->uniqueConstraints !== null) {
foreach ($tableAnnot->uniqueConstraints as $uniqueConstraintAnnot) {
$uniqueConstraint = array('columns' => $uniqueConstraintAnnot->columns);
-
- if ( ! empty($uniqueConstraintAnnot->where)) {
- $uniqueConstraint['where'] = $uniqueConstraintAnnot->where;
+
+ if ( ! empty($uniqueConstraintAnnot->options)) {
+ $uniqueConstraint['options'] = $uniqueConstraintAnnot->options;
}
if ( ! empty($uniqueConstraintAnnot->name)) {
diff --git a/lib/Doctrine/ORM/Mapping/Driver/XmlDriver.php b/lib/Doctrine/ORM/Mapping/Driver/XmlDriver.php
index a07f5b36b..45836a6b9 100644
--- a/lib/Doctrine/ORM/Mapping/Driver/XmlDriver.php
+++ b/lib/Doctrine/ORM/Mapping/Driver/XmlDriver.php
@@ -201,8 +201,8 @@ class XmlDriver extends FileDriver
$index['flags'] = explode(',', (string) $indexXml['flags']);
}
- if (isset($indexXml['where'])) {
- $index['where'] = $indexXml['where'];
+ if (isset($indexXml->options)) {
+ $index['options'] = $this->_parseOptions($indexXml->options->children());
}
if (isset($indexXml['name'])) {
@@ -219,8 +219,9 @@ class XmlDriver extends FileDriver
foreach ($xmlRoot->{'unique-constraints'}->{'unique-constraint'} as $uniqueXml) {
$unique = array('columns' => explode(',', (string) $uniqueXml['columns']));
- if (isset($uniqueXml['where'])) {
- $unique['where'] = $uniqueXml['where'];
+
+ if (isset($uniqueXml->options)) {
+ $unique['options'] = $this->_parseOptions($uniqueXml->options->children());
}
if (isset($uniqueXml['name'])) {
diff --git a/lib/Doctrine/ORM/Mapping/Driver/YamlDriver.php b/lib/Doctrine/ORM/Mapping/Driver/YamlDriver.php
index 6146667a0..c492c0f54 100644
--- a/lib/Doctrine/ORM/Mapping/Driver/YamlDriver.php
+++ b/lib/Doctrine/ORM/Mapping/Driver/YamlDriver.php
@@ -220,8 +220,8 @@ class YamlDriver extends FileDriver
}
}
- if (isset($indexYml['where'])) {
- $index['where'] = $indexYml['where'];
+ if (isset($indexYml['options'])) {
+ $index['options'] = $indexYml['options'];
}
$metadata->table['indexes'][$indexYml['name']] = $index;
@@ -241,8 +241,8 @@ class YamlDriver extends FileDriver
$unique = array('columns' => $uniqueYml['columns']);
}
- if (isset($uniqueYml['where'])) {
- $unique['where'] = $uniqueYml['where'];
+ if (isset($uniqueYml['options'])) {
+ $unique['options'] = $uniqueYml['options'];
}
$metadata->table['uniqueConstraints'][$uniqueYml['name']] = $unique;
diff --git a/lib/Doctrine/ORM/Mapping/Index.php b/lib/Doctrine/ORM/Mapping/Index.php
index 378dd4d67..45953a804 100644
--- a/lib/Doctrine/ORM/Mapping/Index.php
+++ b/lib/Doctrine/ORM/Mapping/Index.php
@@ -41,7 +41,7 @@ final class Index implements Annotation
public $flags;
/**
- * @var string
+ * @var array
*/
- public $where;
+ public $options;
}
diff --git a/lib/Doctrine/ORM/Mapping/UniqueConstraint.php b/lib/Doctrine/ORM/Mapping/UniqueConstraint.php
index 364cb547c..f117d1873 100644
--- a/lib/Doctrine/ORM/Mapping/UniqueConstraint.php
+++ b/lib/Doctrine/ORM/Mapping/UniqueConstraint.php
@@ -36,7 +36,7 @@ final class UniqueConstraint implements Annotation
public $columns;
/**
- * @var string
+ * @var array
*/
- public $where;
+ public $options;
}
diff --git a/lib/Doctrine/ORM/Tools/SchemaTool.php b/lib/Doctrine/ORM/Tools/SchemaTool.php
index 8792c5257..db9438c9f 100644
--- a/lib/Doctrine/ORM/Tools/SchemaTool.php
+++ b/lib/Doctrine/ORM/Tools/SchemaTool.php
@@ -268,13 +268,13 @@ class SchemaTool
$indexData['flags'] = array();
}
- $table->addIndex($indexData['columns'], is_numeric($indexName) ? null : $indexName, (array)$indexData['flags'], isset($indexData['where']) ? $indexData['where'] : null);
+ $table->addIndex($indexData['columns'], is_numeric($indexName) ? null : $indexName, (array)$indexData['flags'], isset($indexData['options']) ? $indexData['options'] : array());
}
}
if (isset($class->table['uniqueConstraints'])) {
foreach ($class->table['uniqueConstraints'] as $indexName => $indexData) {
- $table->addUniqueIndex($indexData['columns'], is_numeric($indexName) ? null : $indexName, isset($indexData['where']) ? $indexData['where'] : null);
+ $table->addUniqueIndex($indexData['columns'], is_numeric($indexName) ? null : $indexName, isset($indexData['options']) ? $indexData['options'] : array());
}
}
diff --git a/tests/Doctrine/Tests/ORM/Mapping/AbstractMappingDriverTest.php b/tests/Doctrine/Tests/ORM/Mapping/AbstractMappingDriverTest.php
index 704fa1804..b81b3ba1e 100644
--- a/tests/Doctrine/Tests/ORM/Mapping/AbstractMappingDriverTest.php
+++ b/tests/Doctrine/Tests/ORM/Mapping/AbstractMappingDriverTest.php
@@ -81,7 +81,7 @@ abstract class AbstractMappingDriverTest extends \Doctrine\Tests\OrmTestCase
0 => array(
'columns' => array('content'),
'flags' => array('fulltext'),
- 'where' => 'content IS NOT NULL',
+ 'options' => array('where' => 'content IS NOT NULL'),
)
), $class->table['indexes']);
}
@@ -96,7 +96,7 @@ abstract class AbstractMappingDriverTest extends \Doctrine\Tests\OrmTestCase
'ClassMetadata should have uniqueConstraints key in table property when Unique Constraints are set.');
$this->assertEquals(array(
- "search_idx" => array("columns" => array("name", "user_email"), 'where' => 'name IS NOT NULL')
+ "search_idx" => array("columns" => array("name", "user_email"), 'options' => array('where' => 'name IS NOT NULL'))
), $class->table['uniqueConstraints']);
return $class;
@@ -939,7 +939,7 @@ abstract class AbstractMappingDriverTest extends \Doctrine\Tests\OrmTestCase
* @HasLifecycleCallbacks
* @Table(
* name="cms_users",
- * uniqueConstraints={@UniqueConstraint(name="search_idx", columns={"name", "user_email"}, where="name IS NOT NULL")},
+ * uniqueConstraints={@UniqueConstraint(name="search_idx", columns={"name", "user_email"}, options={"where": "name IS NOT NULL"})},
* indexes={@Index(name="name_idx", columns={"name"}), @Index(name="0", columns={"user_email"})},
* options={"foo": "bar", "baz": {"key": "val"}}
* )
@@ -1123,7 +1123,7 @@ class User
'orderBy' => NULL,
));
$metadata->table['uniqueConstraints'] = array(
- 'search_idx' => array('columns' => array('name', 'user_email'), 'where' => 'name IS NOT NULL'),
+ 'search_idx' => array('columns' => array('name', 'user_email'), 'options'=> array('where' => 'name IS NOT NULL')),
);
$metadata->table['indexes'] = array(
'name_idx' => array('columns' => array('name')), 0 => array('columns' => array('user_email'))
@@ -1282,7 +1282,7 @@ class Group {}
/**
* @Entity
- * @Table(indexes={@Index(columns={"content"}, flags={"fulltext"}, where="content IS NOT NULL")})
+ * @Table(indexes={@Index(columns={"content"}, flags={"fulltext"}, options={"where": "content IS NOT NULL"})})
*/
class Comment
{
@@ -1296,7 +1296,7 @@ class Comment
$metadata->setInheritanceType(ClassMetadataInfo::INHERITANCE_TYPE_NONE);
$metadata->setPrimaryTable(array(
'indexes' => array(
- array('columns' => array('content'), 'flags' => array('fulltext'), 'where' => 'content IS NOT NULL')
+ array('columns' => array('content'), 'flags' => array('fulltext'), 'options' => array('where' => 'content IS NOT NULL'))
)
));
diff --git a/tests/Doctrine/Tests/ORM/Mapping/php/Doctrine.Tests.ORM.Mapping.Comment.php b/tests/Doctrine/Tests/ORM/Mapping/php/Doctrine.Tests.ORM.Mapping.Comment.php
index e5ac0f8b0..85cbed4dc 100644
--- a/tests/Doctrine/Tests/ORM/Mapping/php/Doctrine.Tests.ORM.Mapping.Comment.php
+++ b/tests/Doctrine/Tests/ORM/Mapping/php/Doctrine.Tests.ORM.Mapping.Comment.php
@@ -5,7 +5,7 @@ use Doctrine\ORM\Mapping\ClassMetadataInfo;
$metadata->setInheritanceType(ClassMetadataInfo::INHERITANCE_TYPE_NONE);
$metadata->setPrimaryTable(array(
'indexes' => array(
- array('columns' => array('content'), 'flags' => array('fulltext'), 'where' => 'content IS NOT NULL')
+ array('columns' => array('content'), 'flags' => array('fulltext'), 'options'=> array('where' => 'content IS NOT NULL'))
)
));
diff --git a/tests/Doctrine/Tests/ORM/Mapping/php/Doctrine.Tests.ORM.Mapping.User.php b/tests/Doctrine/Tests/ORM/Mapping/php/Doctrine.Tests.ORM.Mapping.User.php
index 2e32ee229..67dbd752d 100644
--- a/tests/Doctrine/Tests/ORM/Mapping/php/Doctrine.Tests.ORM.Mapping.User.php
+++ b/tests/Doctrine/Tests/ORM/Mapping/php/Doctrine.Tests.ORM.Mapping.User.php
@@ -116,7 +116,7 @@ $metadata->table['options'] = array(
'baz' => array('key' => 'val')
);
$metadata->table['uniqueConstraints'] = array(
- 'search_idx' => array('columns' => array('name', 'user_email'), 'where' => 'name IS NOT NULL'),
+ 'search_idx' => array('columns' => array('name', 'user_email'), 'options' => array('where' => 'name IS NOT NULL')),
);
$metadata->table['indexes'] = array(
'name_idx' => array('columns' => array('name')), 0 => array('columns' => array('user_email'))
diff --git a/tests/Doctrine/Tests/ORM/Mapping/xml/Doctrine.Tests.ORM.Mapping.Comment.dcm.xml b/tests/Doctrine/Tests/ORM/Mapping/xml/Doctrine.Tests.ORM.Mapping.Comment.dcm.xml
index 5c061a94a..8f02ca852 100644
--- a/tests/Doctrine/Tests/ORM/Mapping/xml/Doctrine.Tests.ORM.Mapping.Comment.dcm.xml
+++ b/tests/Doctrine/Tests/ORM/Mapping/xml/Doctrine.Tests.ORM.Mapping.Comment.dcm.xml
@@ -8,7 +8,11 @@
-
+
+
+
+
+
diff --git a/tests/Doctrine/Tests/ORM/Mapping/xml/Doctrine.Tests.ORM.Mapping.User.dcm.xml b/tests/Doctrine/Tests/ORM/Mapping/xml/Doctrine.Tests.ORM.Mapping.User.dcm.xml
index c61962539..28b1e0571 100644
--- a/tests/Doctrine/Tests/ORM/Mapping/xml/Doctrine.Tests.ORM.Mapping.User.dcm.xml
+++ b/tests/Doctrine/Tests/ORM/Mapping/xml/Doctrine.Tests.ORM.Mapping.User.dcm.xml
@@ -19,7 +19,11 @@
-
+
+
+
+
+
diff --git a/tests/Doctrine/Tests/ORM/Mapping/yaml/Doctrine.Tests.ORM.Mapping.Comment.dcm.yml b/tests/Doctrine/Tests/ORM/Mapping/yaml/Doctrine.Tests.ORM.Mapping.Comment.dcm.yml
index e9e46dece..f37bfdcc6 100644
--- a/tests/Doctrine/Tests/ORM/Mapping/yaml/Doctrine.Tests.ORM.Mapping.Comment.dcm.yml
+++ b/tests/Doctrine/Tests/ORM/Mapping/yaml/Doctrine.Tests.ORM.Mapping.Comment.dcm.yml
@@ -7,4 +7,5 @@ Doctrine\Tests\ORM\Mapping\Comment:
0:
columns: content
flags: fulltext
- where: "content IS NOT NULL"
+ options:
+ where: "content IS NOT NULL"
diff --git a/tests/Doctrine/Tests/ORM/Mapping/yaml/Doctrine.Tests.ORM.Mapping.User.dcm.yml b/tests/Doctrine/Tests/ORM/Mapping/yaml/Doctrine.Tests.ORM.Mapping.User.dcm.yml
index db93190b6..457b24eea 100644
--- a/tests/Doctrine/Tests/ORM/Mapping/yaml/Doctrine.Tests.ORM.Mapping.User.dcm.yml
+++ b/tests/Doctrine/Tests/ORM/Mapping/yaml/Doctrine.Tests.ORM.Mapping.User.dcm.yml
@@ -74,7 +74,8 @@ Doctrine\Tests\ORM\Mapping\User:
uniqueConstraints:
search_idx:
columns: name,user_email
- where: name IS NOT NULL
+ options:
+ where: name IS NOT NULL
indexes:
name_idx:
columns: name