Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [SF][SF2] Relacje oraz dziedziczenie encji.
Forum PHP.pl > Forum > PHP > Frameworki
Fluke
Witam,

Mam problem z Doctrine 2 w Symfony2.
Mam taki schemat Encji:

W adnotacji między AbstractProductContainer a Product wygląda to tak:
Klasa AbstractProductContainer:
  1. /**
  2.  * @ORM\MappedSuperclass()
  3.  */
  4. abstract class AbstractProductContainer extends AbstractSettlement {
  5. /**
  6.   * @ORM\OneToMany(targetEntity="Product", mappedBy="settlement", cascade={"all"})
  7.   *
  8.   * @var Product[]
  9.   */
  10. protected $products;

Klasa Product:
  1. /**
  2.  * @ORM\Entity()
  3.  * @ORM\Table(name="settlements_has_products")
  4.  */
  5. class Product {
  6. /**
  7.   * @ORM\ManyToOne(targetEntity="AbstractProductContainer", inversedBy="products", cascade={"all"})
  8.   * @ORM\JoinColumn(name="settlement_id", referencedColumnName="id", nullable=false, onDelete="CASCADE")
  9.   *
  10.   * @var AbstractProductContainer
  11.   */
  12. protected $settlement;

Oraz klasa AbstractSettlement:
  1. /**
  2.  * @ORM\Entity()
  3.  * @ORM\Table(name="settlements")
  4.  * @ORM\InheritanceType("JOINED")
  5.  * @ORM\DiscriminatorColumn(name="discr", type="string")
  6.  * @ORM\DiscriminatorMap({
  7.  * "bill"="Bill",
  8.  * "invoice"="Invoice",
  9.  * "proforma_invoice"="ProformaInvoice",
  10.  * "final_invoice"="FinalInvoice",
  11.  * })
  12.  */
  13. abstract class AbstractSettlement {}


I po wygenerowaniu schematu bazy poszło wszystko ok, w debugerze występuje taki błąd: The association Product#settlement refers to the inverse side field AbstractSettlement#products which does not exist.. Oczywiście aplikacja działa tak jak ma działać ale trochę mnie to denerwuje.
Ktoś ma jakieś propozycje ?
kpt_lucek
Znajdź $products w klasie AbstractSettlement, sprawdź informacje o mapowaniu. Error daje Ci informacje o tym że klasa (encja)
AbstractSettlement jest w relacji z Products ale brakuje jej (AbstractSettlement) relacji "zwrotnej"? (tak to się chyba tłumaczy - inversedBy) a nie mappedBy (mogę się mylić).

Spróbowałbym zamiany w obu z mappedBy na inversedBy oraz inversedBy na mappedBy.

Pozdrawiam
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.