Eingebettetes Feld als Primärschlüssel aus der Eltern-Entitätszuordnung festlegen - Doctrine2

8

TLDR; Doctrine2: Ich muss wissen, ob es möglich ist, ein Feld innerhalb eines Embeddable zu einem Primärschlüssel aus dem Mapping der Parent Entities (oder MappedSuperclass) zu machen. Ich weiß bereits, wie man den Primärschlüssel aus dem Mapping von Embeddable einstellt, aber das ist nicht ideal (siehe "Die Lange Version").

Die lange Version; Ich versuche, Identity-Value-Objekte für meine Entitäten mit Doctrine2 Embeddables zu erstellen.

Hier ist mein Problem ...

  • Ich habe zwei verschiedene Embeddables (MyEntityId und OtherEntityId) in einer Entität (MyEntity).

  • Ich möchte, dass ein Feld in MyEntityId der Primärschlüssel von MyEntity ist.

  • Da ich zwei Identity-Embeddables in derselben Entität habe, möchte ich das Primärschlüsselfeld in der Entity Mapping-Datei und nicht das Embeddable Mapping definieren.

  • Wenn ich den Primärschlüssel innerhalb des Embeddable definiere, stoße ich auf Probleme, wenn ich dasselbe für OtherEntityId tun möchte (wie ich es an anderer Stelle verwende).

  • Das Zuordnen des Primärschlüssels in MyEntityId und OtherEntityId führt dazu, dass MyEntity einen zusammengesetzten Schlüssel hat, den ich nicht will.

Hier sind meine Mappings im Moment ...

%Vor%

Lösungen?

  • Erstellen Sie zwei separate eingebettete Tabellen, um dasselbe ID-Wertobjekt darzustellen (nicht sehr trocken und zu komplex)

  • Ordnen Sie das Primärschlüsselfeld des Embeddables der Entität zu (ist das möglich? Ich kann es nirgendwo in der Dokumentation finden)

Ben 09.08.2014, 16:27
quelle

1 Antwort

0

Wie in der Doctrine 2 Dokumentation:

  

Einbettbare Objekte können nur Eigenschaften mit einer grundlegenden @ Column-Zuordnung enthalten.    Ссылка

Ich glaube nicht, dass Sie in der Lage sind, die @id-Eigenschaft auf einbettbare, nur einfache Felder zu spezifizieren, da sie eine Art Container und keine Entitäten sind.

    
lebobbi 30.10.2015 19:35
quelle

Tags und Links