Ersetzung von Doctrine Inheritance

Derzeit entwickeln wir eine sehr flexible und modulare Anwendung mit Zend Framework 2 und Doctrine 2. In dieser Anwendung gibt es mehrere Doctrine-Entitäten, zum Beispiel die EntitätProduct im ModulProducts. Dieses ModulProducts ist das Basis- / Standardmodul für das Produktmanagement.

Wir möchten in der Lage sein, eine benutzerdefinierte zu erstellenProducts Modul für einen Kunden (XProducts). Deshalb habe ich eine neue Entität erstellt,XProduct (mit einigen zusätzlichen Feldern) die erweitertProduct.

Also, wenn das benutzerdefinierte Modul aktiviert ist, möchte ich verwendenXProduct und sonstProduct, aber niemals zusammen (im selben Projekt).

Wenn ich beide Entities mit @Entity annotiere, funktioniert es teilweise. zum BeispielfindAll funktioniert einwandfrei, aberfind funktioniert nicht: Die erstellte SELECT-Anweisung enthält die richtigen Spalten, aber die WHERE-Klausel ist falsch. Zum Beispiel:

SELECT t1.id AS id2, t1.name AS name3 FROM products t1 WHERE t0.id = ?

ich vermutet1 steht fürProductX undt0 zumProduct aber ich kann nicht herausfinden, warum die Spalten korrekt sind (t1) aber die where-Klausel ist nicht (t0).

Ich bin mir bewusst, dass Doctrine Single Table Inheritance bereitstellt, um eine Vererbung zu erreichen. Daher ist es erforderlich, eine DiscriminatorColumn zu haben und die DiscriminatorMap in der Basis- / Standardentität zu definieren. Dies passt nicht für uns, da wir unser Basis- / Standardmodul ändern müssen, wenn wir ein neues benutzerdefiniertes Modul für einen Kunden hinzufügen (und das ist nicht das, was wir wollen ...).

Hat jemand eine Ahnung, wie man dieses Problem behebt? Vielen Dank!

Antworten auf die Frage(2)

Ihre Antwort auf die Frage