2017-07-10 2 views
0

Ich programmiere eine Anwendung zum Erstellen von Umfragen mit Symfony3 und Doctrine. Ich würde gerne verstehen, welche die beste Möglichkeit ist, die Beziehung zwischen Umfrage, Items und Antworten zu modellieren. Eine Umfrage besteht aus mehreren Elementen, die eine besondere Antworttypologie aufweisen. Zum Beispiel könnte ich die folgenden Typologien hat:So modellieren Sie die Beziehung zwischen Umfrage, Artikel und verschiedenen Antworttypen

  • AnswerChoice
  • Antworttext
  • AnswerRange
  • etc ..

Welches ist der beste Weg, um dieses Szenario mit Lehre zu modellieren?

dachte ich 2 mögliche Lösungen:

  1. Ich erstelle ein Objekt einzelne Antwort jede erdenkliche Funktion der Antworten einschließlich. Das Item-Objekt sollte eine Eins-zu-Eins-Beziehung mit diesen Objekten haben.

    • Pros: Ich habe nur eine Antwort Objekt
    • Nachteile: Verwirrende und gegen die einzige Verantwortung Prinzip
  2. ich eine generische Item-Objekt eine bestimmte Antwort Objekt enthält (AnswerChoice, .. Antworttext .) in einer vordefinierten Klasseneigenschaft. Das Survey-Objekt sollte eine Eins-zu-viele-Beziehung mit Item haben, die wiederum eine Eins-zu-Eins-Beziehung zu einem bestimmten Antwortobjekt hat.

    • Pros: Nice Lösung, aber ...
    • Nachteile: Ich brauche eine Eigenschaft für jede Art von Antwort!

Könnten Sie mir bitte helfen Wahl die beste Lösung? Ich habe das Gefühl, dass ich dieses Problem nicht gut behandle. Danke

Antwort

1

Es ist Vererbung. Eigentlich Doctrine handles inheritance ziemlich gut.

Es gibt ein paar Möglichkeiten, die Vererbung in Doctrine zu implementieren, aber ich denke, dass in Ihrem Fall Single Table Inheritance ist, was Sie suchen.

Auf diese Weise werden Sie in der Lage sein, ein Repository für Eltern (abstrakte) Antwort zu bekommen, aber Sie erhalten Instanzen von tatsächlichen Kindtypen im Gegenzug.

Verwandte Themen