Druplicon

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

<?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

<?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

<?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:

<?php
$entities = entity_get_controller('laEntidad')->load(array(11));
$entidad = $entities[11];
$entidad->nombre = "nombre cambiado";
entity_get_controller('laEntidad')->save($entidad);

Borrar

<?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!

Comentarios

  1. Oscar Pregonero

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

    Responder

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos necesarios están marcados *

Puedes usar las siguientes etiquetas y atributos HTML: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>