Sonata\Component\Subscriber\ORMInheritanceSubscriber::loadClassMetadata PHP 메소드

loadClassMetadata() 공개 메소드

public loadClassMetadata ( Doctrine\ORM\Event\LoadClassMetadataEventArgs $eventArgs )
$eventArgs Doctrine\ORM\Event\LoadClassMetadataEventArgs
    public function loadClassMetadata(LoadClassMetadataEventArgs $eventArgs)
    {
        $metadata = $eventArgs->getClassMetadata();
        if ($metadata->name !== $this->productClass) {
            return;
        }
        $metadata->setDiscriminatorColumn(array('name' => 'product_type', 'type' => 'string', 'length' => 64));
        $metadata->setInheritanceType(ClassMetadataInfo::INHERITANCE_TYPE_SINGLE_TABLE);
        $metadata->setDiscriminatorMap($this->map);
    }

Usage Example

 public function testLoadClassMetadata()
 {
     $fakedMetadata = new \stdClass();
     $fakedMetadata->name = 'IncorrectValue';
     $subscriber = new ORMInheritanceSubscriber(array(), 'Application\\Sonata\\ProductBundle\\Entity\\Product');
     $metadata = $this->getMockBuilder('Doctrine\\ORM\\Event\\LoadClassMetadataEventArgs')->disableOriginalConstructor()->getMock();
     $metadata->expects($this->any())->method('getClassMetadata')->will($this->returnValue($fakedMetadata));
     $this->assertNull($subscriber->loadClassMetadata($metadata));
     unset($fakedMetadata);
     $classMetadata = $this->getMockBuilder('Doctrine\\ORM\\Mapping\\ClassMetadata')->disableOriginalConstructor()->getMock();
     $classMetadata->name = 'Application\\Sonata\\ProductBundle\\Entity\\Product';
     $metadata = $this->getMockBuilder('Doctrine\\ORM\\Event\\LoadClassMetadataEventArgs')->disableOriginalConstructor()->getMock();
     $metadata->expects($this->any())->method('getClassMetadata')->will($this->returnValue($classMetadata));
     try {
         $subscriber->loadClassMetadata($metadata);
     } catch (\Exception $e) {
         $this->fail('->loadClassMetadata() should not throw an exception when using Product entity');
     }
 }