Feldsammlung vs Entitätsreferenz

14

Wie ist die Feldsammlung von Vorteil? Sie können dasselbe mit einem neuen Inhaltstyp tun, der auf das übergeordnete Element mit einer Entitätsreferenz verweist.

Vielleicht kann jemand einige Situationen auflösen, in denen jeder besser wäre.

Sagen wir für Aufgabe -> Dateien, wäre eine Feldsammlung besser oder ein neuer Inhaltstyp mit einer Entitätsreferenz?

Angenommen, Sie benötigen für jede Datei weitere Daten zu dieser Datei. Dies klingt wie ein Plan für einen neuen Typ mit einer Entitätsreferenz. Sie können jedoch eine Feldsammlung in eine Feldsammlung einbetten.

Ich mag, wie Drupal viele Möglichkeiten hat, die gleichen Dinge zu tun, aber ich kann nicht viel darüber herausfinden, wie unterschiedlich oder ähnlich diese beiden Lösungen sind.

Vielleicht kann jemand helfen, zu erklären?

John M.
quelle

Antworten:

15

Dies ist eine Frage, die ich mir stelle, wenn ich mich neuen Projekten gegenueberstelle : Feldsammlung vs. Entitaetsreferenz + benutzerdefinierte Entitaet oder wenn die Struktur einfach ist: Feldsammlung vs. benutzerdefiniertes Feld mit mehreren Datenbankspalten / Multifeld . Hier ist meine Meinung, basierend auf meiner Erfahrung .

Multifield ist ein großartiges Konzept. Es wäre eine "schlanke" Version der Feldsammlung. Statt eine Entitätsstruktur mit Beziehungen zu erstellen, deckt es die einfachen Anwendungsfälle ab, ohne die Entität zu erstellen. Es gibt jedoch eine Reihe von Problemen , z. B. die nicht vollständige Integration von Features, die nicht wirklich mehrsprachig ist usw. (wenn Sie dies also vorhaben, sind Beiträge wahrscheinlich sehr willkommen).

Field Collection ist eine großartige Lösung, wenn Sie eine Site erstellen, die hier und da nur mit ein paar kleinen Änderungen durchgeführt werden kann. Es bietet Site-Erstellern ein leistungsstarkes Tool zum Erstellen komplexer Strukturen, ohne sich um die Interna kümmern zu müssen. Grundsätzlich wird eine Entität erstellt, die durch die IDs mit der "Host" -Entität in Beziehung steht, sodass Felder und alles hinzugefügt werden können. Die Nachteile bestünden in der Kenntnis der Interna der Feldsammlung, die Sie benötigen, um komplexe Vorgänge durchzuführen, z. B. die Verwaltung einer Feldsammlung mit einer Entitätsreferenz oder die Migration von Daten. Da es sich um ein generisches Tool handelt, wäre es ziemlich kompliziert, noch einen Schritt weiter zu gehen.

Eine andere Option, die Sie dort haben, ist die Verwendung von ECK mit Entity Reference, aber meine Erfahrung damit war bisher eine Katastrophe. Ich finde es einfacher, den Entitätstyp ohne den Helfer durch Code zu erstellen.

Es kommt darauf an, was Sie brauchen und was für Ihr Projekt am besten geeignet ist. Wenn Sie die Zeit und die Entwickler haben, Entitätstypen zu erstellen, die mit Ihrem Datenmodell über die Entitätsreferenz in Beziehung stehen, haben Sie mehr Kontrolle darüber, was passiert Ihre Datenstrukturen, aber dann sind Sie auch "verantwortlich" dafür.

Nach einer Weile des Testens mit allen oben beschriebenen Lösungen entscheiden wir uns in meinem Team immer für die Entitätstypen + ER, aber ich sehe, dass Field Collection für kleine Projekte ohne Datenmigration oder komplizierte i18n-Einrichtung der schnellste Weg ist gehen.

pcambra
quelle
Schöner Überblick. Ich möchte nur darauf hinweisen, dass die Feldsammlung die Migration über das Migrationsmodul unterstützt.
lefterav
1
Ein weiterer Aspekt betrifft die Versionierung / Überarbeitung. Inhaltstypen (Knoten) verfügen über eine fertige Lösung, um Revisionen nachzuverfolgen, und Änderungen an den angehängten Feldsammlungen werden für den übergeordneten Knoten übernommen. Im Gegenteil, Unternehmen haben ihre eigenen Revisionen, die für das betreffende Unternehmen nicht relevant sind.
Nachspiel
@lefterav es tut sich in der Tat, was ich meinte ist, dass die Migration einer Feldsammlung für einige Anwendungsfälle eine sehr schwierige Aufgabe sein kann und berücksichtigt werden muss.
pcambra
3

Es hängt wirklich von den Daten ab, die Sie in die Felder eingeben, und von der Verwendung, die Sie damit machen möchten.

Wenn Sie Field Collection verwenden möchten, stellen Sie sicher, dass Sie von normalen Ansichten über Übersetzungen und solr-Indizierungen usw. alles tun können, was sich in Ihrem Bereich befindet.

Wenn Sie die Informationen, die Sie einer Feldsammlung hinzufügen, wiederverwenden möchten, ist es besser, einen Inhaltstyp oder eine benutzerdefinierte Entität zu verwenden. Beispiel: Ein Schulkurs hat 5 Themen. Ein Thema enthält 3 Felder: Titel, Stunden und Stufe. Wenn Sie Themen in mehreren Schulkursen wiederverwenden möchten, wählen Sie einen Inhaltstyp / eine benutzerdefinierte Entität und verwenden Sie die Entitätsreferenz.

Tyler Durden
quelle
0

Ihre Leistung sollte in etwa gleich sein, die Feldsammlung verwendet jedoch die Entity-API und erfordert nicht die Erstellung eines benutzerdefinierten Inhaltstyps.

GWPROD
quelle