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
1 2 3 |
< ?php $datos = array('nombre' => "ejemplo"); $controller = entity_get_controller('laEntidad'); $entidad = $controller->create($datos); |
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
1 |
< ?php //retorna los mismos estados que drupal_write_record() $saved = entity_get_controller('laEntidad')->save($entidad); |
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
1 |
< ?php $entities = entity_get_controller('laEntidad')->load($ids); |
->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:
1 2 3 4 |
< ?php $entities = entity_get_controller('laEntidad')->load(array(11)); $entidad = $entities[11]; $entidad->nombre = "nombre cambiado"; entity_get_controller('laEntidad')->save($entidad); |
Borrar
1 |
< ?php entity_get_controller('laEntidad')->delete(array(1, 2, 3, 4)); |
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!
Hola. me podrias indicar cual es la funcion para agregar registros a la tabla que colocaste de ejemplo (nombre_de_la_tabla)