From 25342b706dbfbf8dfe9535706942c66b70d03a4e Mon Sep 17 00:00:00 2001 From: Adam Pancutt Date: Tue, 15 Oct 2013 12:36:47 +0100 Subject: [PATCH 1/4] Added support for field options to FieldBuilder --- .../ORM/Mapping/Builder/FieldBuilder.php | 29 +++++++++++++++++++ .../ORM/Mapping/ClassMetadataBuilderTest.php | 7 +++++ 2 files changed, 36 insertions(+) diff --git a/lib/Doctrine/ORM/Mapping/Builder/FieldBuilder.php b/lib/Doctrine/ORM/Mapping/Builder/FieldBuilder.php index f517dd343..75f2fe3c8 100644 --- a/lib/Doctrine/ORM/Mapping/Builder/FieldBuilder.php +++ b/lib/Doctrine/ORM/Mapping/Builder/FieldBuilder.php @@ -153,6 +153,35 @@ class FieldBuilder return $this; } + /** + * Sets an option. + * + * @param string $name + * @param mixed $value + * + * @return FieldBuilder + */ + public function option($name, $value) + { + if (!array_key_exists('options', $this->mapping)) { + $this->mapping['options'] = array(); + } + $this->mapping['options'][$name] = $value; + return $this; + } + + /** + * Sets unsigned option. + * + * @param bool $flag + * + * @return FieldBuilder + */ + public function unsigned($flag = true) + { + return $this->option('unsigned', (bool)$flag); + } + /** * @param string $strategy * diff --git a/tests/Doctrine/Tests/ORM/Mapping/ClassMetadataBuilderTest.php b/tests/Doctrine/Tests/ORM/Mapping/ClassMetadataBuilderTest.php index f14b60b3f..cb60b92b4 100644 --- a/tests/Doctrine/Tests/ORM/Mapping/ClassMetadataBuilderTest.php +++ b/tests/Doctrine/Tests/ORM/Mapping/ClassMetadataBuilderTest.php @@ -174,6 +174,13 @@ class ClassMetadataBuilderTest extends \Doctrine\Tests\OrmTestCase $this->assertEquals(array('columnName' => 'id', 'fieldName' => 'id', 'id' => true, 'type' => 'integer'), $this->cm->fieldMappings['id']); } + public function testCreateUnsignedOptionField() + { + $this->builder->createField('state', 'integer')->unsigned()->build(); + + $this->assertEquals(array('fieldName' => 'state', 'type' => 'integer', 'options' => array('unsigned' => true), 'columnName' => 'state'), $this->cm->fieldMappings['state']); + } + public function testAddLifecycleEvent() { $this->builder->addLifecycleEvent('getStatus', 'postLoad'); From db5274113ac10773e286a6ec6ae73f2ba555926e Mon Sep 17 00:00:00 2001 From: Adam Pancutt Date: Tue, 15 Oct 2013 12:49:34 +0100 Subject: [PATCH 2/4] Code style fix --- lib/Doctrine/ORM/Mapping/Builder/FieldBuilder.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/Doctrine/ORM/Mapping/Builder/FieldBuilder.php b/lib/Doctrine/ORM/Mapping/Builder/FieldBuilder.php index 75f2fe3c8..9b1f1aea6 100644 --- a/lib/Doctrine/ORM/Mapping/Builder/FieldBuilder.php +++ b/lib/Doctrine/ORM/Mapping/Builder/FieldBuilder.php @@ -163,7 +163,7 @@ class FieldBuilder */ public function option($name, $value) { - if (!array_key_exists('options', $this->mapping)) { + if ( ! array_key_exists('options', $this->mapping)) { $this->mapping['options'] = array(); } $this->mapping['options'][$name] = $value; From 553086ae3dd755098215b7ca01373bd41553290c Mon Sep 17 00:00:00 2001 From: Adam Pancutt Date: Tue, 15 Oct 2013 13:17:07 +0100 Subject: [PATCH 3/4] Removed check for instantiated options array --- lib/Doctrine/ORM/Mapping/Builder/FieldBuilder.php | 3 --- 1 file changed, 3 deletions(-) diff --git a/lib/Doctrine/ORM/Mapping/Builder/FieldBuilder.php b/lib/Doctrine/ORM/Mapping/Builder/FieldBuilder.php index 9b1f1aea6..920899b11 100644 --- a/lib/Doctrine/ORM/Mapping/Builder/FieldBuilder.php +++ b/lib/Doctrine/ORM/Mapping/Builder/FieldBuilder.php @@ -163,9 +163,6 @@ class FieldBuilder */ public function option($name, $value) { - if ( ! array_key_exists('options', $this->mapping)) { - $this->mapping['options'] = array(); - } $this->mapping['options'][$name] = $value; return $this; } From 352f5394e5b55e4359b118594dde21fe2693eeab Mon Sep 17 00:00:00 2001 From: Adam Pancutt Date: Fri, 3 Jan 2014 09:48:38 +0000 Subject: [PATCH 4/4] Removed FieldBuilder::unsigned() method as it is only supported by MySQL --- lib/Doctrine/ORM/Mapping/Builder/FieldBuilder.php | 12 ------------ .../Tests/ORM/Mapping/ClassMetadataBuilderTest.php | 2 +- 2 files changed, 1 insertion(+), 13 deletions(-) diff --git a/lib/Doctrine/ORM/Mapping/Builder/FieldBuilder.php b/lib/Doctrine/ORM/Mapping/Builder/FieldBuilder.php index 920899b11..9be19eb40 100644 --- a/lib/Doctrine/ORM/Mapping/Builder/FieldBuilder.php +++ b/lib/Doctrine/ORM/Mapping/Builder/FieldBuilder.php @@ -167,18 +167,6 @@ class FieldBuilder return $this; } - /** - * Sets unsigned option. - * - * @param bool $flag - * - * @return FieldBuilder - */ - public function unsigned($flag = true) - { - return $this->option('unsigned', (bool)$flag); - } - /** * @param string $strategy * diff --git a/tests/Doctrine/Tests/ORM/Mapping/ClassMetadataBuilderTest.php b/tests/Doctrine/Tests/ORM/Mapping/ClassMetadataBuilderTest.php index cb60b92b4..abdddb737 100644 --- a/tests/Doctrine/Tests/ORM/Mapping/ClassMetadataBuilderTest.php +++ b/tests/Doctrine/Tests/ORM/Mapping/ClassMetadataBuilderTest.php @@ -176,7 +176,7 @@ class ClassMetadataBuilderTest extends \Doctrine\Tests\OrmTestCase public function testCreateUnsignedOptionField() { - $this->builder->createField('state', 'integer')->unsigned()->build(); + $this->builder->createField('state', 'integer')->option('unsigned', true)->build(); $this->assertEquals(array('fieldName' => 'state', 'type' => 'integer', 'options' => array('unsigned' => true), 'columnName' => 'state'), $this->cm->fieldMappings['state']); }