Alle Entitäten eines bestimmten Typs finden?

8

Ich arbeite an einer Administrationsoberfläche für ein Modul, das einen benutzerdefinierten Entitätstyp verwendet. Gibt es eine Funktion oder eine Möglichkeit, mit der ich alle Entitäten eines bestimmten Typs finden kann, um Benutzern eine Liste von ihnen anzuzeigen?

user1359
quelle

Antworten:

8

Du suchst die EntityFieldQueryKlasse :

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

Der obige Code lädt alle Knotenentitäten mit einem Inhaltstyp von article. Es filtert nach einem benutzerdefinierten Feld namens field_my_fieldund der statusEigenschaft des Knotens. Ich habe das nur als Referenz eingegeben, Sie würden es nicht brauchen, um alle Knoten ohne Filter zu laden. Gleiches gilt für die Bestellung per Anweisung.

Ich hoffe, das hilft.

Clive
quelle
1

Sie können auch den folgenden einfachen Zweiliner ausprobieren:

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

Oder der folgende Einzeiler (PHP> = 5,5), gebrauchsfertig mit drush eval:

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

Um sie zu entfernen, überprüfen Sie bitte: Kann ich Knoten eines bestimmten Inhaltstyps mit Drush löschen?

Kenorb
quelle