Encuentra todas las entidades de un tipo dado?

8

Estoy trabajando en una interfaz de administrador para un módulo que utiliza un tipo de entidad personalizada. ¿Hay alguna función o alguna forma que pueda usar para encontrar todas las entidades de un tipo dado, de modo que pueda mostrar a los usuarios una lista de ellas?

usuario1359
fuente

Respuestas:

8

Estás buscando la EntityFieldQueryclase :

$query = new EntityFieldQuery;

$query->entityCondition('entity_type', 'node')
  ->entityCondition('bundle', 'article')
  ->fieldCondition('field_my_field', 'value', 'a_value')
  ->propertyCondition('status', 1)
  ->fieldOrderBy('field_my_field', 'value', 'DESC');

$results = $query->execute();
if (isset($results['node'])) {
  $nodes = node_load_multiple(array_keys($results['node']));

  foreach ($nodes as $nid => $node) {
    // Do something with the node object
  }
}

El código anterior carga todas las entidades de nodo con un tipo de contenido de article. Se filtra en un campo personalizado llamado field_my_fieldy la statuspropiedad del nodo. Solo puse eso como referencia, no lo necesitaría para cargar todos los nodos sin ningún filtro. Lo mismo ocurre con el pedido por declaración.

Espero que ayude.

Clive
fuente
1

También puede probar el siguiente simple de dos líneas:

$res = (new EntityFieldQuery)->entityCondition('entity_type', 'node')->execute(); 
$entities = entity_load('node', array_keys(reset($res)));

O el siguiente one-liner (PHP> = 5.5), listo para usar con drush eval:

print_r((new EntityFieldQuery)->entityCondition("entity_type", "node")->entityCondition("bundle", "page")->execute());

Para eliminarlos, verifique: ¿Puedo eliminar nodos de un tipo de contenido determinado con Drush?

kenorb
fuente