drupal-header

Entidades en Drupal: 2) Trabajar con la entidad

En el capitulo anterior definimos una entidad, pero solo eso, no hacia nada. Ahora vamos a ver como interactuar con ella.

Hoy vamos a conocer las 5 operaciones mas comunes que se le suelen hacer a una entidad:

  • crear
  • guardar
  • cargar
  • actualizar
  • borrar

Tenemos dos formas de hacer esto. una es usando funciones y otra usando el controlador directamente. En este articulo vamos a usar el controlador.
Las funciones son solo otra forma de tratar con las entidades. y queda en el gusto de cada uno usar controlador o funciones.

NOTA sobre las funciones para entidades: Drupal provee entity_load(), entity_label() y entity_uri() mientras que Entity API agrega las que faltan: entity_save(), entity_create(), entity_delete(), entity_revision_delete(), entity_view() y entity_access() entre otras.
Este es uno de los motivos por el cual se creó Entity API. Faltaban funcionalidades a la hora de tratar con entidades.

Crear

Es simple de ver. Cargamos el controlador de la entidad y creamos una.
Si cabe aclaremos un poco “$controller = entity_get_controller(‘laEntidad’);“: Pedimos a Drupal que nos de el controlador de la entidad “laEntidad”.

NOTA: entity_get_controller() instancia el controlador de nuestra entidad y lo cachea, así que pueden pedirlo una o mil veces, que no va a impactar en la performance del request actual.

Guardar

La única diferencia con el caso anterior es que en lugar de asignar el controlador a una variable, la hemos usado al vuelo.
$entidad es el objeto que creamos antes.

Cargar

->load() siempre nos devuelve un array
$ids es un array de entityID.

Actualizar

Supongamos que sabemos que el ID de nuestra entidad es el 11:

Borrar

Donde el array que se le pasa es un listado de los entityID que queremos borrar.
NOTA: el método ->delete() no devuelve nada.

Eso es todo. Para acabar queda comentar que el controlador que nos proporciona Entity API tiene mas métodos bastante útiles y que les recomiendo revisar. Estos están en el archivo “entity.controller.inc” del modulo (busquen la clase “EntityAPIController”).

Chau!

One Comments

  • Oscar Pregonero 03/10/2013

    Hola. me podrias indicar cual es la funcion para agregar registros a la tabla que colocaste de ejemplo (nombre_de_la_tabla)

:).