Como depurar EntityFieldQuery en Drupal 7

Author Top
kenneth

En Drupal 7 el utilizar la clase EntityFielQuery nos facilita mucho los procesos de creación  de consultas a la base de datos, al tratar todo como si fuese una entidad. Pero en ciertas situaciones es necesario verificar el código SQL que esta generándose al emplear EntityFielQuery, desafortunadamente la clase EntityFielQuery no posee el metodo mágico '__toString()'.

1. Agregando un tag al query.

Implementando el hook hook_query_TAG_alter tendremos acceso al objecto de tipo QueryAlterableInterface que se crea antes de ejecutar la consulta empleando el EntityFieldQuery, el primero sera crear una instancia de la clase EntityFieldQuery, si tienes dudas sobre como crear consultas con el EntityFieldQuery puedes ver la entrada al blog "Introducción a EntityFieldQuery para Drupal 7".

$query = new EntityFieldQuery();

Posteriormente antes de llamar al metodo "execute()", debemos emplear el metodo "addTag()" el cual nos permitirá utilizar el hook_query_TAG_alter que nos brinda Drupal, podemos usar el siguiente código:

->addTag('my_tag')
->execute();

2. Implementación del hook_query_TAG_alter.

En este momento solo nos falta implementar en nuestro 'modulo_personalizado' el hook_query_TAG_alter, podemos utilizar el siguiente código:

function modulo_personalizado_query_my_tag_alter(QueryAlterableInterface $query){
 watchdog('modulo_personalizado', '$query: ' . dpr($query, 1));
 watchdog('modulo_personalizado', 'SQL: ' . $query->__toString());
}

De esta manera podemos tener acceso a la variable $query que si cuenta con el metodo mágico '__toString()' y observar el código SQL generado por nuestro objecto de EntityFieldQuery. Eventualmente podríamos modificar desde esta función nuestra consulta si fuera necesario,

Espero que les sea de mucha ayuda,

bursa esc
bursa eskort
bursa escort bayan bursa travesti escort bursa merkez escort bursaescort bursa escort bayanlar alanya eskort bayan antalya bayan eskort havalimanı transfer