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.
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é.
la source
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é.
la source