Used to derive a class metadata of the current instance for a mapped child class.
public deriveChildMetadata ( |
||
$child |
public function testDeriveChildMetadata() { $cm = new ClassMetadata("Doctrine\\Tests\\ODM\\CouchDB\\Mapping\\Person"); $cm->mapField(array('fieldName' => 'id', 'id' => true)); $cm->mapField(array('fieldName' => 'username', 'type' => 'string')); $cm->mapAttachments('attachments'); $cm->mapManyToOne(array('targetDocument' => 'Address', 'fieldName' => 'address')); $child = new ClassMetadata('Doctrine\\Tests\\ODM\\CouchDB\\Mapping\\Employee'); $cm->deriveChildMetadata($child); $child->mapField(array('fieldName' => 'status', 'type' => 'string')); $this->assertFalse(isset($child->fieldMappings['status']['declared'])); $this->assertEquals("Doctrine\\Tests\\ODM\\CouchDB\\Mapping\\Employee", $child->name); $this->assertTrue(isset($child->fieldMappings['id']), "id field has to be on child metadata"); $this->assertEquals("Doctrine\\Tests\\ODM\\CouchDB\\Mapping\\Person", $child->fieldMappings['id']['declared']); $this->assertTrue(isset($child->fieldMappings['username']), "Username field has to be on child metadata"); $this->assertEquals("Doctrine\\Tests\\ODM\\CouchDB\\Mapping\\Person", $child->fieldMappings['username']['declared']); $this->assertTrue(isset($child->associationsMappings['address']), "address association has to be on child metadata"); $this->assertEquals("Doctrine\\Tests\\ODM\\CouchDB\\Mapping\\Person", $child->associationsMappings['address']['declared']); $this->assertEquals("attachments", $child->attachmentField); $this->assertEquals("Doctrine\\Tests\\ODM\\CouchDB\\Mapping\\Person", $child->attachmentDeclaredClass); return $child; }