Trouver toutes les entités d'un type donné?

8

Je travaille sur une interface d'administration pour un module qui utilise un type d'entité personnalisé. Existe-t-il une fonction ou un moyen que je peux utiliser pour trouver toutes les entités d'un type donné, afin que je puisse en montrer aux utilisateurs une liste?

user1359
la source

Réponses:

8

Vous cherchez la EntityFieldQueryclasse :

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

Le code ci-dessus charge toutes les entités de noeud avec un type de contenu de article. Il filtre sur un champ personnalisé appelé field_my_fieldet la statuspropriété du nœud. J'ai seulement mis cela à titre de référence, vous n'en auriez pas besoin pour charger tous les nœuds sans aucun filtre. Il en va de même pour la commande par instruction.

J'espère que cela pourra aider.

Clive
la source
1

Vous pouvez également essayer les deux lignes simples suivantes:

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

Ou le one-liner suivant (PHP> = 5.5), prêt à l'emploi avec drush eval:

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

Pour les supprimer, veuillez vérifier: Puis-je supprimer des nœuds d'un type de contenu donné avec Drush?

kenorb
la source