sábado, 6 de julio de 2013

EntityFieldQuery

EntityFieldQuery viene siendo una clase, nueva en Drupal 7. Esta permite recuperar información de las entidades según criterios. Nos puede ser útil para hacer digamos algo como una consulta.

Supongamos el siguiente ejemplo: (no mirar el diseño de base de dato que no es lo que nos interesa ahora)

Se tiene un tipo de contenido estudiante con los datos field_nombre, field_edad, field_sexo. Esos estudiantes tienen cursos y cada curso tienen los campos field_nombre_del _curso, field_nota y un campo field_nota_estudiante de tipo node references que tiene el nid del estudiante. Queremos recuperar el nombre de todos los cursos en que el estudiante de nid 25 tiene nota de 5.

Con EntityFieldQuery sería algo como:

$query = new EntityFieldQuery();

$query -> entityCondition('entity_type', 'node')
->entityCondition('bundle', 'curso')
->propertyCondition('status', 1)
->fieldCondition('field_nota_estudiante', 'nid', 25, '=')
->fieldCondition('field_nota', 'value', '5', '=');

$result = $query -> execute();

$r=array_keys($result['node']);

Ahora en $r se tiene un arreglo con los nid de curso en que el estudiante 25 tiene nota 5. A partir de aquí ya todos saben cómo obtener el nombre del curso.

Algunos otras opciones de EntityFieldQuery:

Si quisiera saber la cantidad: $count = $query ->count() ->execute();

Si deseara obtener solo los 5 primeros ->range(0,5);

Para ordenar -> propertyOrderBy('field_nota_estudiante', 'ASC');

Espero haya servido. Más información en: http://drupal.org/node/1343708

No hay comentarios: