6

My struktury DB jest następujący:Doctrine2: OneToMany na odwzorowanym nadklasy

praca:

  • CTI stół Pracuj
  • MappedSuperclass stół AbstractImageWork która rozciąga Work
  • finał tabela PhotoWork, która rozciąga AbstractImageWork

komentarz:

  • MappedSuperclass stół Komentarz
  • końcowa tabela WorkComment która rozciąga komentarz

WorkComment ma związek ManyToOne do Pracy:

@ManyToOne(targetEntity="Work", inversedBy="comments") 

Pracy ma OneToMany relacja do WorkComment:

@OneToMany(targetEntity="WorkComment", mappedBy="work") 

Problem polega na tym, że doktryna daje mi ten błąd podczas aktualizacji Schemat:

[Doctrine\ORM\Mapping\MappingException] 
It is illegal to put an inverse side one-to-many or many-to-many association on 
mapped superclass 'Acme\...\AbstractImageWork#comments'. 

Myślę, że to ma coś wspólnego z MappedSuperclass AbstractImageWork utknął w środku pomiędzy Pracy i PhotoWork, ale w rzeczywistości nie umieścić tę relację na MappedSuperclass, ale na stole .. więc CTI dlaczego Doctrine zachowa się w ten sposób?

Wszelkie pomysły?

Odpowiedz

14

W niektórych przypadkach, gdy masz taki błąd, gdy dziedziczą z klasy, która jest oznaczona jako @ORM\MappedSuperclass, spróbuj zmienić właściwości przejść do poziomu z prywatny do chroniony