フィールドコレクションとエンティティリファレンス


14

フィールドコレクションはどのように利点がありますか?エンティティ参照を使用して、親を指す新しいコンテンツタイプで同じことを実行できます。

たぶん、誰かがそれぞれがより良くなるいくつかの状況を破壊することができます。

タスク->ファイルの場合、フィールドコレクションの方が良いでしょうか、またはエンティティ参照を持つ新しいコンテンツタイプですか?

各ファイルについて、そのファイルに関する他のデータがさらに必要だったとします。エンティティ参照を使用した新しいタイプの計画のように聞こえますが、フィールドコレクション内にフィールドコレクションを埋め込むことができます。

Drupalには同じことをする多くの方法がありますが、これら2つのソリューションの違いや類似性についてはあまりわかりません。

たぶん誰かが説明するのを助けることができますか?

回答:


15

これは、新しいプロジェクト、Field Collection vs Entity Reference + custom entityに直面するとき、または構造が単純な場合、Field Collection vs複数のdb列/ Multifieldを持つカスタムフィールドに直面するときに自分自身に疑問を投げかけます。これが私の経験に基づいた私の意見です

マルチフィールドは素晴らしい概念です。フィールドコレクションの「軽量」バージョンであり、関係を持つエンティティ構造を作成する代わりに、エンティティを作成せずに単純なユースケースをカバーします。ただし、完全な機能の統合ではない、実際に多言語ではないなど、多くの問題があります(したがって、これを使用する予定の場合、貢献はおそらく大歓迎です)。

Field Collectionは、あちこちで微調整するだけで実行できるサイトを実行している場合に最適なソリューションであり、内部をあまり心配することなく、サイトビルダーに複雑な構造を作成するための強力なツールを提供します。基本的に、IDによって「ホスト」エンティティに関連するエンティティを作成し、フィールドとすべてにフィールドを追加できるようにします。欠点は、エンティティコレクションを使用したフィールドコレクションの管理やデータの移行などの複雑な操作を実行するために必要なフィールドコレクションの内部の知識にあります。汎用ツールであるため、一歩先を行くのはかなり複雑です。

別の選択肢として、Entity ReferenceでECKを使用する方法がありますが、これまでの私の経験は災害であり、ヘルパーを使用せずにコードでエンティティタイプを作成する方が簡単です。

エンティティリファレンスを使用してデータモデルに関連するエンティティタイプを作成する時間と開発者がいる場合は、必要なものとプロジェクトに最適なものの問題であり、何が起こっているかをより詳細に制御できますデータ構造ですが、あなたもそのための「責任者」です。

上記のすべてのソリューションでしばらくテストした後、私のチームでは常にエンティティタイプ+ ERを使用しますが、データの移行や複雑なi18nセットアップのない小規模プロジェクトでは、Field Collectionが最も速い方法であることがわかります行く。


素敵な概要。フィールドコレクションは、移行モジュールによる移行をサポートしていることをコメントしたいと思います。
lefterav

1
もう1つの側面は、バージョニング/リビジョンに関係しています。コンテンツタイプ(ノード)には、リビジョンを追跡するための簡単なソリューションがあり、添付されたフィールドコレクションへの変更は親ノードに反映されます。それどころか、エンティティは、参照されたエンティティとは無関係に、独自のリビジョンを持っています。
lefterav

@lefteravそれは確かにそうです、私が意図したことは、フィールドコレクションの移行はいくつかのユースケースにとって非常に難しいタスクであり、説明する必要があるということです。
pcambra

3

それは実際にフィールドに入力するデータとそれらをどのように使いたいかに依存します。

Field Collectionを使用する場合は、通常のビューから翻訳、solrインデックス作成など、スコープ内にあるものにできることを確認してください。

フィールドコレクションに追加した情報を再利用する場合は、コンテンツタイプまたはカスタムエンティティを使用することをお勧めします。例:学校のコースには5つのトピックがあります。トピックには、タイトル、時間、レベルの3つのフィールドが含まれます。複数の学校のコースでトピックを再利用する場合は、コンテンツタイプ/カスタムエンティティに移動し、エンティティ参照を使用します。


0

パフォーマンスはほぼ同等ですが、フィールドコレクションはEntity APIを使用し、カスタムコンテンツタイプを作成する必要はありません。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.