2016-04-26 13 views
8

Ich möchte ein Fileable-Merkmal erstellen, das eine Entität mit Methoden für CRUD-Dateien basierend auf der unten genannten Datei-Entität bereitstellt.Verwenden von Doctrine und Symfony zum Erstellen von polymorphen Assoziationen

Nach dem Lesen der Dokumentation über Lehre und der Suche im Internet, das Beste, was ich finden konnte ist Inheritance Mapping, aber diese alle erfordern die Unterklasse, um die Oberklasse zu erweitern, die nicht ideal ist, wie die aktuellen Entitäten bereits andere Klassen erweitern. Ich könnte FileFoo Einheit und eine FileBar Einheit haben, aber das wird zu unordentlich und erfordert eine zusätzliche Join (super ->sub ->entity).

Alternativ könnte ich eine Datei Entity habe, die für jedes Unternehmen viele Spalten für Unternehmen (so foo_id für das Foo Objekt, bar_id für das bar Objekt und so weiter), aber das wird chaotisch und würde eine neue Spalte hat, dass ich Ich möchte das Fileable-Merkmal auch hinzufügen.

Also zu den Fragen: Denke ich darüber nach, wie ich Daten falsch halten möchte? Gibt es einige Funktionen/Funktionen in Doctrine/Symfony, die ich verpasst habe? Glaubst du, dass ich diese Funktion hinzufügen würde, wenn ich Doctrine forkieren würde, um diese Funktion hinzuzufügen, wo sollte ich auch hinsehen?

+1

Brauchen Sie wirklich die umgekehrte Seite der Beziehung Entität -> Datei? Da ich in einem meiner Projekte eine Schnittstelle 'FileableInterface' habe und ich nicht von der' Datei' auf die 'Entity' zugreifen musste, vermied ich eine komplizierte Konfiguration von Doctrine. Es kommt also darauf an, was Sie brauchen, aber wenn Sie '$ file-> getEntity()' nicht verwenden müssen, reicht möglicherweise nur die Eigentümerseite der Beziehung aus. – Terenoth

Antwort

1

Ich habe eine ähnliche Sache mit der Vererbung in Merkmalen definiert, die neben Schnittstellen, im Grunde gab mir, was eine multiple Ausdehnung geben würde.

1

Werfen Sie einen Blick auf embeddables oder Sie könnten Eigenschaften verwenden.

Verwandte Themen