it-swarm.com.de

Alle Entitäten eines bestimmten Typs finden?

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?

8
user1359

Sie suchen die EntityFieldQuery Klasse :

$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 dem Inhaltstyp article. Es filtert nach einem benutzerdefinierten Feld namens field_my_field und die Eigenschaft status des Knotens. Ich habe nur als Referenz angegeben, dass Sie es nicht benötigen würden, um alle Knoten ohne Filter zu laden. Gleiches gilt für die Bestellung per Anweisung.

Ich hoffe, das hilft.

8
Clive

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), der mit drush eval Verwendet werden kann:

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?

1
kenorb