Field Collection vs Entity Reference

14

¿Cómo es una ventaja la recolección de campo? Puede hacer lo mismo con un nuevo tipo de contenido que apunta al padre con una Referencia de entidad.

Quizás alguien pueda analizar algunas situaciones en las que cada una sería mejor.

Digamos para Tarea -> Archivos, ¿sería mejor la recopilación de campos o un nuevo tipo de contenido con una Referencia de entidad?

Digamos que para cada archivo necesita más información sobre ese archivo, parece un plan para un nuevo tipo con una referencia de entidad, pero puede incrustar una colección de campos dentro de una colección de campos.

Disfruto de cómo Drupal tiene muchas formas de hacer las mismas cosas, pero no puedo encontrar mucho sobre cuán diferentes o similares son estas dos soluciones.

Tal vez alguien puede ayudar a explicar?

John M.
fuente

Respuestas:

15

Esta es una pregunta que me hago cuando enfrento nuevos proyectos, Field Collection vs Entity Reference + entidad personalizada o si la estructura es simple, Field Collection vs campo personalizado con varias columnas db / Multifield . Aquí está mi opinión basada en mi experiencia. .

Multifield es un gran concepto, sería una versión "ligera" de la colección de campo, en lugar de crear una estructura de entidad con relaciones, cubre los casos de uso simples sin crear la entidad. Tiene una serie de problemas embargo, , como la integración de características no completa, no es realmente multilingüe, etc. (por lo que si planea usar esto, las contribuciones probablemente serán realmente bienvenidas).

Field Collection es una gran solución si está haciendo un sitio que se puede hacer solo con unos pocos ajustes aquí y allá, les brinda a los creadores de sitios una herramienta poderosa para crear estructuras complejas sin preocuparse demasiado por las partes internas. Básicamente creará una entidad que se relaciona con la entidad "host" por los identificadores, permitiendo agregarle campos y todo. Las desventajas vendrían en el conocimiento de los aspectos internos de la recopilación de campo que necesita para realizar operaciones complejas, como administrar una recopilación de campo con una referencia de entidad o migrar datos. Como es una herramienta genérica, sería bastante complicado ir un paso más allá.

Otra opción que tiene allí es usar ECK con referencia de entidad, pero mi experiencia con esto ha sido un desastre hasta ahora, me resulta mucho más fácil crear el tipo de entidad por código sin el ayudante.

Es una cuestión de lo que necesita y cuál es la mejor opción para su proyecto, si tiene el tiempo y los desarrolladores para crear tipos de entidad que se relacionen con su modelo de datos a través de Referencia de entidad, tendrá más control sobre lo que está sucediendo con sus estructuras de datos, pero entonces usted es el "responsable" de eso también.

Después de probar un tiempo con todas las soluciones descritas anteriormente, en mi equipo siempre buscamos los tipos de entidad + ER, pero puedo ver que para proyectos pequeños, sin migración de datos o una configuración complicada de i18n, Field Collection es la forma más rápida de Vamos.

pcambra
fuente
Buena vista general. Solo me gustaría comentar que la colección de campo admite la migración a través del módulo migrate.
lefterav
1
Otro aspecto tiene que ver con las versiones / revisiones. Los tipos de contenido (nodos) tienen una solución lista para realizar un seguimiento de las revisiones, y los cambios en las colecciones de campos adjuntas se reflejan en el nodo principal. Por el contrario, las entidades tienen sus propias revisiones, irrelevantes de la entidad referida.
lefterav
@lefterav, de hecho, lo que quise decir es que migrar una colección de campo puede ser una tarea muy difícil para algunos casos de uso y debe tenerse en cuenta.
pcambra
3

Realmente depende de los datos que ingrese en los campos y del uso que desee hacer con ellos.

Si desea usar Field Collection, asegúrese de poder hacer lo que esté a su alcance, desde vistas normales, hasta traducción, indexación de solr, etc.

Si desea reutilizar la información que agrega a una colección de campos, será mejor utilizar un tipo de contenido o una entidad personalizada. Ejemplo: un curso escolar tiene 5 temas. Un tema contiene 3 campos: Título, horas y nivel. Si va a reutilizar temas en varios cursos escolares, busque un tipo de contenido / entidad personalizada y use la referencia de entidad.

Tyler Durden
fuente
0

Deben ser más o menos equivalentes en rendimiento, pero la recopilación de campos utiliza la API de entidad y no requiere la creación de un tipo de contenido personalizado.

GWPROD
fuente