में सिद्धांत वर्ग विरासत मैं सिद्धांत 2 ओआरएम का उपयोग कर कक्षा विरासत स्थापित करने की कोशिश कर रहा हूं, लेकिन त्रुटियां प्राप्त कर रहा हूं (यहां तक कि उनके उदाहरणों का पालन करते समय भी)। मैं एक सिम्फनी 2 सैंडबॉक्स से कंसोल का उपयोग कर रहा हूँ। सरल उदाहरण कक्षाओं का उपयोग करता है व्यक्ति और कर्मचारी; एक कर्मचारीव्यक्ति बढ़ाता है।एक्सएमएल
त्रुटि मैं जब संस्थाओं उत्पन्न करने के लिए कोशिश कर रहा हो रही है:
[Doctrine\ORM\Mapping\MappingException] Entity class 'Employee' used in the discriminator map of class 'Application\MyBundle\Entity\Person' does not exist.
एक्सएमएल मुकदमा चल रहा नीचे है:
व्यक्ति
<?xml version="1.0" encoding="utf-8"?>
<doctrine-mapping xmlns="http://doctrine-project.org/schemas/orm/doctrine-mapping"
xsi="http://www.w3.org/2001/XMLSchema-instance"
schemaLocation="http://doctrine-project.org/schemas/orm/doctrine-mapping http://doctrine-project.org/schemas/orm/doctrine-mapping.xsd">
<entity name="Application\MyBundle\Entity\Person" inheritance-type="SINGLE_TABLE">
<change-tracking-policy>DEFERRED_IMPLICIT</change-tracking-policy>
<id name="id" type="integer" column="id">
<generator strategy="AUTO"/>
</id>
<discriminator-column name="discr" type="string" />
<discriminator-map>
<discriminator-mapping value="employee" class="Employee" />
</discriminator-map>
<lifecycle-callbacks/>
</entity>
</doctrine-mapping>
कर्मचारी
<?xml version="1.0" encoding="utf-8"?>
<doctrine-mapping xmlns="http://doctrine-project.org/schemas/orm/doctrine-mapping"
xsi="http://www.w3.org/2001/XMLSchema-instance"
schemaLocation="http://doctrine-project.org/schemas/orm/doctrine-mapping http://doctrine-project.org/schemas/orm/doctrine-mapping.xsd">
<entity name="Application\MyBundle\Entity\Employee">
<change-tracking-policy>DEFERRED_IMPLICIT</change-tracking-policy>
<id name="id" type="integer" column="id">
<generator strategy="AUTO"/>
</id>
<lifecycle-callbacks/>
</entity>
</doctrine-mapping>
ऐसा लगता है कि कई लोग अपने सिद्धांत इकाइयों को कॉन्फ़िगर करने के लिए एक्सएमएल का उपयोग नहीं करते हैं (अधिकांश उदाहरण PHP एनोटेशन का उपयोग कर रहे हैं), लेकिन यह मेरे लिए सबसे तार्किक लगता है इसलिए मैं जानना चाहता हूं कि इसे ठीक से कैसे किया जाए। क्या किसी और को यह समस्या है, या समाधान के बारे में पता है?
Exception trace: () at C:\SVN\Symfony\symfony-sandbox\src\vendor\doctrine\lib\Doctrine\ORM\Mappi ng\MappingException.php:187 Doctrine\ORM\Mapping\MappingException::invalidClassInDiscriminatorMap() at C:\S VN\Symfony\symfony-sandbox\src\vendor\doctrine\lib\Doctrine\ORM\Mapping\ClassMet adataInfo.php:1465 Doctrine\ORM\Mapping\ClassMetadataInfo->setDiscriminatorMap() at C:\SVN\Symfony \symfony-sandbox\src\vendor\doctrine\lib\Doctrine\ORM\Mapping\Driver\XmlDriver.p hp:98 Doctrine\ORM\Mapping\Driver\XmlDriver->loadMetadataForClass() at C:\SVN\Symfony \symfony-sandbox\src\vendor\doctrine\lib\Doctrine\ORM\Mapping\Driver\DriverChain .php:75 Doctrine\ORM\Mapping\Driver\DriverChain->loadMetadataForClass() at C:\SVN\Symfo ny\symfony-sandbox\src\vendor\doctrine\lib\Doctrine\ORM\Mapping\ClassMetadataFac tory.php:280 Doctrine\ORM\Mapping\ClassMetadataFactory->loadMetadata() at C:\SVN\Symfony\sym fony-sandbox\src\vendor\doctrine\lib\Doctrine\ORM\Mapping\ClassMetadataFactory.p hp:178 Doctrine\ORM\Mapping\ClassMetadataFactory->getMetadataFor() at C:\SVN\Symfony\s ymfony-sandbox\src\vendor\doctrine\lib\Doctrine\ORM\Mapping\ClassMetadataFactory .php:125 Doctrine\ORM\Mapping\ClassMetadataFactory->getAllMetadata() at C:\SVN\Symfony\s ymfony-sandbox\src\vendor\symfony\src\Symfony\Bundle\DoctrineBundle\Command\Doct rineCommand.php:143 Symfony\Bundle\DoctrineBundle\Command\DoctrineCommand->getBundleMetadatas() at C:\SVN\Symfony\symfony-sandbox\src\vendor\symfony\src\Symfony\Bundle\DoctrineBun dle\Command\GenerateEntitiesDoctrineCommand.php:77 Symfony\Bundle\DoctrineBundle\Command\GenerateEntitiesDoctrineCommand->execute( ) at C:\SVN\Symfony\symfony-sandbox\src\vendor\symfony\src\Symfony\Component\Con sole\Command\Command.php:150 Symfony\Component\Console\Command\Command->run() at C:\SVN\Symfony\symfony-sand box\src\vendor\symfony\src\Symfony\Component\Console\Application.php:184 Symfony\Component\Console\Application->doRun() at C:\SVN\Symfony\symfony-sandbo x\src\vendor\symfony\src\Symfony\Bundle\FrameworkBundle\Console\Application.php: 74 Symfony\Bundle\FrameworkBundle\Console\Application->doRun() at C:\SVN\Symfony\s ymfony-sandbox\src\vendor\symfony\src\Symfony\Component\Console\Application.php: 113 Symfony\Component\Console\Application->run() at C:\SVN\Symfony\symfony-sandbox\ app\console:11
मुझे yml का उपयोग कर एक समान कॉन्फ़िगरेशन के साथ एक ही समस्या थी। मैंने सिर्फ भेदभावकर्ता मानचित्र को हटा दिया, कक्षा आधारित इकाइयों को उत्पन्न किया और फिर इसे वापस जोड़ा।हालांकि यह थोड़ा अजीब है और ऐसा करने का शायद एक बेहतर तरीका है। –
बहुत बहुत धन्यवाद! आपने मेरा समय बचाया! – Jekis