Actualizar la base de datos de acuerdo a la definición de un Tipo de Entidad

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.

Ejecución de código PHP usando Devel

 

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.

Añadir nuevo comentario

Texto sin formato

  • No se permiten etiquetas HTML.
  • Saltos automáticos de líneas y de párrafos.
  • Las direcciones de correos electrónicos y páginas web se convierten en enlaces automáticamente.
CAPTCHA
Esta pregunta para comprobar que eres una persona real e impedir el envío de SPAM.