public function testLoadClassMetadataWithoutParent() { $this->loadClassMetadataEvent->getClassMetadata()->willReturn($this->classMetadata->reveal()); $this->classMetadata->getName()->willReturn(get_class($this->object->reveal())); $this->classMetadata->setCustomRepositoryClass('Sulu\\Bundle\\ContactBundle\\Entity\\ContactRepository')->shouldNotBeCalled(); $this->loadClassMetadataEvent->getEntityManager()->willReturn($this->entityManager->reveal()); $this->entityManager->getConfiguration()->willReturn($this->configuration->reveal()); $this->configuration->getNamingStrategy()->willReturn(null); /** @var \Doctrine\Common\Persistence\Mapping\Driver\MappingDriver $mappingDriver */ $mappingDriver = $this->prophesize('Doctrine\\Common\\Persistence\\Mapping\\Driver\\MappingDriver'); $this->configuration->getMetadataDriverImpl()->willReturn($mappingDriver->reveal()); $mappingDriver->getAllClassNames()->willReturn([get_class($this->parentObject->reveal())]); $mappingDriver->loadMetadataForClass(get_class($this->parentObject->reveal()), Argument::type('Doctrine\\ORM\\Mapping\\ClassMetadata'))->shouldBeCalled(); $this->subscriber->loadClassMetadata($this->loadClassMetadataEvent->reveal()); }
public function testSetGetNamingStrategy() { $this->assertInstanceOf('Doctrine\\ORM\\Mapping\\NamingStrategy', $this->configuration->getNamingStrategy()); $namingStrategy = $this->getMock('Doctrine\\ORM\\Mapping\\NamingStrategy'); $this->configuration->setNamingStrategy($namingStrategy); $this->assertSame($namingStrategy, $this->configuration->getNamingStrategy()); }
/** * Set the association mappings of a metadata. * * @param ClassMetadataInfo $metadata * @param Configuration $configuration */ protected function setAssociationMappings(ClassMetadataInfo $metadata, Configuration $configuration) { $supportedClasses = $configuration->getMetadataDriverImpl()->getAllClassNames(); foreach (class_parents($metadata->getName()) as $parent) { if (in_array($parent, $supportedClasses)) { $parentMetadata = new OrmClassMetadata($parent, $configuration->getNamingStrategy()); $configuration->getMetadataDriverImpl()->loadMetadataForClass($parent, $parentMetadata); foreach ($parentMetadata->getAssociationMappings() as $key => $value) { if ($this->hasRelation($value['type'])) { $metadata->associationMappings[$key] = $value; } } } } }
/** * @param ClassMetadataInfo $metadata * @param \Doctrine\ORM\Configuration $configuration */ private function setAssociationMappings(ClassMetadataInfo $metadata, $configuration) { foreach (class_parents($metadata->getName()) as $parent) { $parentMetadata = new ClassMetadata($parent, $configuration->getNamingStrategy()); if (in_array($parent, $configuration->getMetadataDriverImpl()->getAllClassNames())) { $configuration->getMetadataDriverImpl()->loadMetadataForClass($parent, $parentMetadata); if ($parentMetadata->isMappedSuperclass) { foreach ($parentMetadata->getAssociationMappings() as $key => $value) { if ($this->hasRelation($value['type'])) { $metadata->associationMappings[$key] = $value; } } } } } }
/** * @param ClassMetadataInfo $metadata * @param Configuration $configuration */ private function setAssociationMappings(ClassMetadataInfo $metadata, Configuration $configuration) { if (!class_exists($metadata->getName())) { return; } foreach (class_parents($metadata->getName()) as $parent) { $parentMetadata = new ClassMetadata($parent, $configuration->getNamingStrategy()); if (!in_array($parent, $this->getAllClassNames($configuration))) { continue; } $configuration->getMetadataDriverImpl()->loadMetadataForClass($parent, $parentMetadata); if (!$parentMetadata->isMappedSuperclass) { continue; } // map relations foreach ($parentMetadata->getAssociationMappings() as $key => $value) { if ($this->hasRelation($value['type'])) { $value['sourceEntity'] = $metadata->getName(); $metadata->associationMappings[$key] = $value; } } } }