Skip to content

Commit

Permalink
[2.0] DDC-247 - Fix bug with nullable not working in XML field and jo…
Browse files Browse the repository at this point in the history
…in-column properties.
  • Loading branch information
beberlei committed Jan 27, 2010
1 parent 9d7bd73 commit a652bc6
Show file tree
Hide file tree
Showing 4 changed files with 20 additions and 6 deletions.
10 changes: 7 additions & 3 deletions lib/Doctrine/ORM/Mapping/Driver/XmlDriver.php
Original file line number Diff line number Diff line change
Expand Up @@ -148,12 +148,16 @@ public function loadMetadataForClass($className, ClassMetadataInfo $metadata)
}

if (isset($fieldMapping['unique'])) {
$mapping['unique'] = (bool)$fieldMapping['unique'];
$mapping['unique'] = ((string)$fieldMapping['unique'] == "false") ? false : true;
}

if (isset($fieldMapping['options'])) {
$mapping['options'] = (array)$fieldMapping['options'];
}

if (isset($fieldMapping['nullable'])) {
$mapping['nullable'] = ((string)$fieldMapping['nullable'] == "false") ? false : true;
}

if (isset($fieldMapping['version']) && $fieldMapping['version']) {
$metadata->setVersionMapping($mapping);
Expand Down Expand Up @@ -407,11 +411,11 @@ private function _getJoinColumnMapping(\SimpleXMLElement $joinColumnElement)
);

if (isset($joinColumnElement['unique'])) {
$joinColumn['unique'] = (bool)$joinColumnElement['unique'];
$joinColumn['unique'] = ((string)$joinColumnElement['unique'] == "false") ? false : true;
}

if (isset($joinColumnElement['nullable'])) {
$joinColumn['nullable'] = (bool)$joinColumnElement['nullable'];
$joinColumn['nullable'] = ((string)$joinColumnElement['nullable'] == "false") ? false : true;
}

if (isset($joinColumnElement['onDelete'])) {
Expand Down
8 changes: 7 additions & 1 deletion tests/Doctrine/Tests/ORM/Mapping/MappingDriverTest.php
Original file line number Diff line number Diff line change
Expand Up @@ -50,14 +50,16 @@ public function testXmlGetAllClassNames()
$this->assertEquals(1, count($classNames));
}

private function _testUserClassMapping($class)
private function _testUserClassMapping(ClassMetadata $class)
{
$this->assertEquals('cms_users', $class->getTableName());
$this->assertEquals(ClassMetadata::INHERITANCE_TYPE_NONE, $class->getInheritanceType());
$this->assertEquals(2, count($class->fieldMappings));
$this->assertTrue(isset($class->fieldMappings['id']));
$this->assertTrue(isset($class->fieldMappings['name']));
$this->assertEquals('string', $class->fieldMappings['name']['type']);
$this->assertTrue($class->fieldMappings['name']['nullable']);
$this->assertTrue($class->fieldMappings['name']['unique']);
$this->assertEquals(array('id'), $class->identifier);
$this->assertEquals(ClassMetadata::GENERATOR_TYPE_AUTO, $class->getIdGeneratorType());

Expand Down Expand Up @@ -92,6 +94,10 @@ private function _testUserClassMapping($class)
$this->assertTrue($class->associationMappings['groups']->isCascadeRefresh);
$this->assertTrue($class->associationMappings['groups']->isCascadeDetach);
$this->assertTrue($class->associationMappings['groups']->isCascadeMerge);

// Non-Nullability of Join Column
$this->assertFalse($class->associationMappings['groups']->joinTable['joinColumns'][0]['nullable']);
$this->assertFalse($class->associationMappings['groups']->joinTable['joinColumns'][0]['unique']);
}
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@
<generator strategy="AUTO"/>
</id>

<field name="name" column="name" type="string" length="50"/>
<field name="name" column="name" type="string" length="50" nullable="true" unique="true" />

<one-to-one field="address" target-entity="Address">
<join-column name="address_id" referenced-column-name="id"/>
Expand All @@ -34,7 +34,7 @@
<many-to-many field="groups" target-entity="Group">
<join-table name="cms_users_groups">
<join-columns>
<join-column name="user_id" referenced-column-name="id"/>
<join-column name="user_id" referenced-column-name="id" nullable="false" unique="false" />
</join-columns>
<inverse-join-columns>
<join-column name="group_id" referenced-column-name="id"/>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,8 @@ Doctrine\Tests\ORM\Mapping\User:
name:
type: string
length: 50
nullable: true
unique: true
oneToOne:
address:
targetEntity: Address
Expand All @@ -30,6 +32,8 @@ Doctrine\Tests\ORM\Mapping\User:
joinColumns:
user_id:
referencedColumnName: id
nullable: false
unique: false
inverseJoinColumns:
group_id:
referencedColumnName: id
Expand Down

0 comments on commit a652bc6

Please sign in to comment.