Lære Class Arv i XML

stemmer
7

Jeg prøver å sette opp klassen arv bruker Lære to ORM, men jeg får feil (selv når du følger deres eksempel). Jeg bruker konsollen fra en Symfony 2 sandkasse. Den enkle eksempelet bruker klassene person og Employee ; En Employee strekker Person .

Feilen jeg får når jeg prøver å generere enhetene er:

[Lære \ ORM \ Kartlegging \ MappingException]

Entity klassen 'Employee' brukes i discriminator kartet over klassen 'Application \ MyBundle \ enhet \ Person' eksisterer ikke.

XML blir prøvd er under:

Person

<?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>

Ansatt

<?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>

Det virker ikke som mange bruker XML til å konfigurere sine Lære enheter (de fleste eksemplene bruker PHP kommentarer), men det virker mest logisk for meg, så jeg vil gjerne vite hvordan du gjør det riktig. Har noen andre hatt dette problemet, eller vet om en løsning?

En full unntak spor er som følger:

Unntak spor:
 () C: \ SVN \ Symfony \ symfony-sandkasse \ src \ selger \ læren \ lib \ Lære \ ORM \ Mappi
ng \ MappingException.php: 187
 Lære \ ORM \ Kartlegging \ MappingException :: invalidClassInDiscriminatorMap () på C: \ S
VN \ Symfony \ symfony-sandbox \ src \ leverandør \ doktrinen \ lib \ Lære \ ORM \ Mapping \ ClassMet
adataInfo.php: 1465
 Lære \ ORM \ Mapping \ ClassMetadataInfo-> setDiscriminatorMap () C: \ SVN \ Symfony
\ Symfony-sandbox \ src \ leverandør \ doktrinen \ lib \ Lære \ ORM \ Kartlegging \ Driver \ XmlDriver.p
hp: 98
 Lære \ ORM \ Mapping \ Driver \ XmlDriver-> loadMetadataForClass () C: \ SVN \ Symfony
\ Symfony-sandbox \ src \ leverandør \ doktrinen \ lib \ Lære \ ORM \ Kartlegging \ Driver \ DriverChain
Php: 75
 Lære \ ORM \ Mapping \ Driver \ DriverChain-> loadMetadataForClass () C: \ SVN \ Symfo
ny \ symfony-sandbox \ src \ leverandør \ doktrinen \ lib \ Lære \ ORM \ Mapping \ ClassMetadataFac
tory.php: 280
 Lære \ ORM \ Mapping \ ClassMetadataFactory-> loadMetadata () C: \ SVN \ Symfony \ sym
Fony-sandbox \ src \ leverandør \ doktrinen \ lib \ Lære \ ORM \ Mapping \ ClassMetadataFactory.p
hp: 178
 Lære \ ORM \ Mapping \ ClassMetadataFactory-> getMetadataFor () C: \ SVN \ Symfony \ s
ymfony-sandbox \ src \ leverandør \ doktrinen \ lib \ Lære \ ORM \ Mapping \ ClassMetadataFactory
Php: 125
 Lære \ ORM \ Mapping \ ClassMetadataFactory-> getAllMetadata () C: \ SVN \ Symfony \ s
ymfony-sandbox \ src \ leverandør \ symfony \ src \ Symfony \ Bundle \ DoctrineBundle \ Command \ Doct
rineCommand.php: 143
 Symfony \ Bundle \ DoctrineBundle \ Command \ DoctrineCommand-> getBundleMetadatas () på
C: \ SVN \ Symfony \ symfony-sandbox \ src \ leverandør \ symfony \ src \ Symfony \ Bundle \ DoctrineBun
dle \ Command \ GenerateEntitiesDoctrineCommand.php: 77
 Symfony \ Bundle \ DoctrineBundle \ Command \ GenerateEntitiesDoctrineCommand-> utføre (
) C: \ SVN \ Symfony \ symfony-sandkasse \ src \ selger \ symfony \ src \ Symfony \ Komponent \ Con
såle \ Command \ Command.php: 150
 Symfony \ Komponent \ konsollen \ Command \ Kommando-> run () C: \ SVN \ symfony \ symfony-sand
boks \ src \ selger \ symfony \ src \ Symfony \ Komponent \ konsoll \ Application.php: 184
 Symfony \ Komponent \ konsollen \ søknads-> doRun () C: \ SVN \ symfony \ symfony-Sandbo
x \ src \ leverandør \ symfony \ src \ Symfony \ Bundle \ FrameworkBundle \ Console \ Application.php:
74
 Symfony \ Bundle \ FrameworkBundle \ konsollen \ søknads-> doRun () C: \ SVN \ symfony \ s
ymfony-sandkasse \ src \ selger \ symfony \ src \ Symfony \ Komponent \ konsoll \ Application.php:
113
 Symfony \ Komponent \ konsollen \ søknads-> run () C: \ SVN \ symfony \ symfony-sandkasse \
app \ konsoll: 11
Publisert på 14/10/2010 klokken 12:55
kilden bruker
På andre språk...                            


3 svar

stemmer
5

Jeg fikk den samme feilen.

Jeg fant ut hva jeg skal gjøre:

I ditt eksempel, må du ha den 'Employee' enhet allerede generert.

  1. fjerne arv i Person og legge en id i medarbeider
  2. doktrinen: generere: enheter
  3. definere XML-er som de var ved starten
  4. doktrinen: generere: enheter

Fungerte for meg.

Svarte 14/03/2011 kl. 09:01
kilden bruker

stemmer
2

Du bør nok bruke full klasse navn (med navnerom) når du definerer discriminator.

Som:

<discriminator-map>
    <discriminator-mapping value="employee" class="Application\MyBundle\Entity\Employee" />
</discriminator-map>
Svarte 25/02/2011 kl. 16:13
kilden bruker

stemmer
0

Navnene på klasser i kartet discriminator trenger ikke å være fullt kvalifisert hvis klassene finnes i samme navnerom som foretaket klasse på hvilket kart diskriminatoren er brukt.

6.2. Enkelt Tabell Arv

Svarte 02/03/2011 kl. 15:20
kilden bruker

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more