Encontre todas as entidades de um determinado tipo?

8

Estou trabalhando em uma interface administrativa para um módulo que usa um tipo de entidade personalizado. Existe uma função ou alguma maneira que eu possa usar para encontrar todas as entidades de um determinado tipo, para que eu possa mostrar aos usuários uma lista delas?

user1359
fonte

Respostas:

8

Você está procurando a EntityFieldQueryturma :

$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
  }
}

O código acima carrega todas as entidades do nó com um tipo de conteúdo article. Ele filtra em um campo personalizado chamado field_my_fielde a statuspropriedade do nó. Eu apenas coloquei isso para referência, você não precisaria carregar todos os nós sem nenhum filtro. O mesmo vale para a ordem por declaração.

Espero que ajude.

Clive
fonte
1

Você também pode tentar o seguinte simples forro de duas linhas:

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

Ou o seguinte one-liner (PHP> = 5.5), pronto para uso com drush eval:

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

Para removê-los, verifique: Posso excluir nós de um determinado tipo de conteúdo com o Drush?

kenorb
fonte