Trova tutte le entità di un determinato tipo?


8

Sto lavorando su un'interfaccia di amministrazione per un modulo che utilizza un tipo di entità personalizzato. Esiste una funzione o un modo in cui posso usare per trovare tutte le entità di un determinato tipo, in modo da poter mostrare agli utenti un elenco di esse?

Risposte:


8

Stai cercando 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
  }
}

Il codice precedente carica tutte le entità nodo con un tipo di contenuto di article. Filtra su un campo personalizzato chiamato field_my_fielde la statusproprietà del nodo. Ho solo messo questo per riferimento che non ti servirà per caricare tutti i nodi senza filtri. Lo stesso vale per l'ordine per dichiarazione.

Spero che aiuti.


1

Puoi anche provare la seguente semplice fodera:

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

O il seguente one-liner (PHP> = 5.5), pronto per l'uso con drush eval:

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

Per rimuoverli, controlla: Posso eliminare i nodi di un determinato tipo di contenuto con Drush?

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.