it-swarm.com.de

entityQuery vs. entityTypeManager

Ich habe einen benutzerdefinierten Inhaltstyp user_in_club und ich möchte einen einzelnen bestimmten Knoten laden, der zwei Feldwerten entspricht. Es gibt zwei Möglichkeiten (von denen ich weiß), die dies lösen können:

$result = \Drupal::entityQuery('node')
->condition('type', 'user_in_club')
->condition('field_user_id', $account->id())
->condition('field_club_id',$active_club)
->execute();
$nodes = \Drupal::entityTypeManager()->getStorage('node')->loadMultiple($result);

OR

$nodes = \Drupal::entityTypeManager()
->getStorage('node')
->loadByProperties(['type' => 'user_in_club', 'field_user_id' => $account->id(), 'field_club_id' => $active_club ]);

In meinem Beispiel wird nur eine Knoten-ID zurückgegeben. Wenn jedoch mehrere Knoten-IDs zurückgegeben werden, ist eine Methode in Bezug auf Leistung usw. der anderen vorzuziehen? Ich sehe derzeit keinen großen Unterschied, außer dass ETQ besser ist, um komplexere Abfragen zu erstellen.

4
theuni

Sie sind identisch. loadByProperties () konvertiert Ihre Bedingungen tatsächlich intern in eine Entitätsabfrage.

Ich würde wirklich empfehlen, eine Entitätsabfrage direkt selbst durchzuführen. Es ist besser lesbar und loadByProperties () wird möglicherweise in Zukunft veraltet sein.

7
Berdir