Actualización 12 de Septiembre 2020
Desde la versión Drupal 8.7 lo que se menciona en este artículo ha cambiado. Lo cuál está oficialmente informado en la descripción de este enlace.
Actualmente se requiere de un módulo adicional a drush, llamado Devel Entity Updates, luego de instalarlo podrás actualizar la base de datos de las entidades haciendo uso del comando:
drush entup
O su equivalente
drush entity-updates
La versión drush updatedb --entity-updates ya no está soportada.
De la misma forma, la ejecución de código PHP con devel ha sido quitada, para poder ejecutar código PHP a través de la interfaz de drupal es necesario usar el módulo Devel PHP. Este módulo habilita la ruta devel/php donde podrás usar tu código, sin embargo el código recomendado más abajo en este artículo está como deprecated y ya fue quitado en la versión 9 de Drupal.
Fin actualización 12 de Septiembre 2020
Para crear Tipos de Entidad de contenido (Content Entity Type) en Drupal 8, se hace uso de clases con anotaciones y métodos especiales para definir ciertas características; por ejemplo los campos del tipo de entidad. Cuando se instala el módulo, este Tipo de Entidad se agrega y en la base de datos se agregan las tablas con la estructura necesaria para almacenar la información de la entidad, incluyendo los campos del tipo de entidad.
Que sucedería si luego de realizar un cambio en esta definición, por ejemplo al agregar un campo adicional, deseamos que este cambio de código se vea reflejado en la base de datos. Esto no ocurrirá automáticamente. Tampoco el borrado de caché ayuda en este caso.
Probablemente una de las soluciones que se te han ocurrido es la de desinstalar y volver a instalar el módulo. Esto funciona, con un costo asociado: el tiempo que demora todo este proceso. Además, se pierden los datos que ya se han agregado.
Hay una alternativa, ejecutar el siguiente código.
\Drupal::entityTypeManager()->clearCachedDefinitions(); \Drupal::service('entity.definition_update_manager')->applyUpdates();
Podrías realizarlo por ejemplo usando el módulo devel y en la página para ejecutar código, copiar, pegar y ejecutar el mismo.
Con drush, tienes un equivalente con el siguiente comando:
drush updatedb --entity-updates
Gracias a este pequeño truco podrás crear y modificar tus tipos de entidad con más facilidad.
Me pareció interesante el artículo
Añadir nuevo comentario