Collection de champs vs référence d'entité

14

En quoi la collecte sur le terrain est-elle un avantage? Vous pouvez faire la même chose avec un nouveau type de contenu pointant vers le parent avec une référence d'entité.

Peut-être que quelqu'un peut décomposer certaines situations où chacune serait meilleure.

Dites pour la tâche -> Fichiers, la collecte de champs serait-elle meilleure ou un nouveau type de contenu avec une référence d'entité?

Disons que pour chaque fichier, vous avez besoin de plus de données sur ce fichier, cela ressemble à un plan pour un nouveau type avec une référence d'entité, mais vous pouvez incorporer une collection de champs à l'intérieur d'une collection de champs.

J'apprécie à quel point Drupal a plusieurs façons de faire les mêmes choses, mais je ne trouve pas grand-chose sur la différence ou la similitude de ces deux solutions.

Peut-être que quelqu'un peut aider à expliquer?

John M.
la source

Réponses:

15

C'est une question que je me pose face à de nouveaux projets, Field Collection vs Entity Reference + entité personnalisée ou si la structure est simple, Field Collection vs field personnalisé avec plusieurs colonnes db / Multifield . Voici mon opinion basée sur mon expérience .

Multifield est un excellent concept, ce serait une version "légère" de la collection de champs, au lieu de créer une structure d'entité avec des relations, il couvre les cas d'utilisation simples sans créer l'entité. Cependant, il a un certain nombre de problèmes , comme l'intégration incomplète des fonctionnalités, pas vraiment multilingue, etc. (donc si vous prévoyez d'utiliser cela, les contributions seront probablement les bienvenues).

Field Collection est une excellente solution si vous faites un site qui peut être fait juste avec quelques ajustements ici et là, il donne aux constructeurs de sites un outil puissant pour créer des structures complexes sans se soucier beaucoup des internes. Il créera fondamentalement une entité qui se rapporte à l'entité "hôte" par les identifiants, permettant d'y ajouter des champs et tout. Les inconvénients viendraient de la connaissance des éléments internes de la collecte de champs dont vous avez besoin pour effectuer des opérations complexes telles que la gestion d'une collection de champs avec une référence d'entité ou la migration de données. Comme il s'agit d'un outil générique, il serait assez compliqué d'aller plus loin.

Une autre option que vous avez là-bas est d'utiliser ECK avec référence d'entité, mais mon expérience avec cela a été un désastre jusqu'à présent, je trouve qu'il est beaucoup plus facile de créer le type d'entité par code sans l'aide.

Cela dépend de ce dont vous avez besoin et de ce qui convient le mieux à votre projet.Si vous avez le temps et les développeurs de créer des types d'entités qui correspondent à votre modèle de données via Entity Reference, vous aurez plus de contrôle sur ce qui se passe avec vos structures de données, mais vous en êtes aussi le "responsable".

Après avoir testé un certain temps avec toutes les solutions décrites ci-dessus, dans mon équipe, nous optons toujours pour les types d'entités + ER, mais je peux voir que pour les petits projets, sans migration de données ou configuration i18n compliquée, Field Collection est juste le moyen le plus rapide de aller.

pcambra
la source
Belle vue d'ensemble. Je voudrais juste dire que la collecte de champs prend en charge la migration via le module de migration.
lefterav
1
Un autre aspect concerne les versions / révisions. Les types de contenu (nœuds) ont une solution prête pour suivre les révisions et les modifications apportées aux collections de champs attachées sont répercutées sur le nœud parent. Au contraire, les entités ont leurs propres révisions, sans rapport avec l'entité référée.
lefterav
@lefterav oui, ce que je voulais dire, c'est que la migration d'une collection de champs peut être une tâche très difficile pour certains cas d'utilisation et doit être prise en compte.
pcambra
3

Cela dépend vraiment des données que vous saisissez dans les champs et de l'utilisation que vous souhaitez en faire.

Si vous souhaitez utiliser Field Collection, assurez-vous de pouvoir accéder à tout ce qui est dans votre domaine, des vues normales, à la traduction, à l'indexation de solr, etc.

Si vous souhaitez réutiliser les informations que vous ajoutez dans une collection de champs, il sera préférable d'utiliser un type de contenu ou une entité personnalisée. Exemple: un cours scolaire comporte 5 sujets. Un sujet contient 3 champs: Titre, heures et niveau. Si vous allez réutiliser des sujets dans plusieurs cours de l'école, optez pour un type de contenu / une entité personnalisée et utilisez la référence d'entité.

Tyler Durden
la source
0

Ils doivent être à peu près équivalents en termes de performances, mais la collecte de champs utilise l'API d'entité et ne nécessite pas la création d'un type de contenu personnalisé.

GWPROD
la source