Doctrine 2 Vererbung Mapping mit Zuordnung

HINWEIS : wenn das, was ich will, ist nicht möglich, ein "nicht möglich" als Antwort akzeptiert werden

In der Doctrine 2 Dokumentation über inheritance mappinges sagt, es gibt 2 Möglichkeiten :

  • Single table inheritance (STI)
  • Class table inheritance (CTI)

Für beide gibt es die Warnung :

Wenn Sie eine STI - /CTI-Einrichtung, wie eine viele-zu-eins-oder eins-zu-eins-Entität Sie sollten nie eine der Klassen in den oberen Ebenen der erbschaft-Hierarchie als "targetEntity", nur diejenigen, die keine Unterklassen. Ansonsten Lehre NICHT schaffen proxy-Instanzen dieser Entität und wird IMMER laden Sie die Person eifrig.

So, wie kann ich Vorgehen zu verwenden Vererbung eine Zuordnung zu der Basis (abstrakte) Klasse ? (und behalten Sie die performance natürlich)


Beispiel

Benutzer hat viele Pet (abstrakte Klasse erweitert Dog oder Cat).

Was ich tun will :

class User {
    /**
     * @var array(Pet) (array of Dog or Cat)
     */
    private $pets;
}

Wegen der Warnung in der Lehre Dokumentation, sollte ich das tun :

class User {
    /**
     * @var array(Dog)
     */
    private $dogs;
    /**
     * @var array(Cat)
     */
    private $cats;
}

Das ist ärgerlich, da verliere ich die Vorteile von Vererbung !

Hinweis : ich habe nicht fügen Sie die Lehre Annotationen für das mapping zur DB, aber Sie können verstehen, was ich meine

InformationsquelleAutor der Frage Matthieu Napoli | 2011-04-19

Schreibe einen Kommentar