J'ai un type de contenu personnalisé user_in_club
et j'aimerais charger un seul nœud spécifique correspondant à deux valeurs de champ. Il y a 2 façons (que je connais) qui peuvent résoudre ce problème:
$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 ]);
Dans mon seul exemple, un seul ID de nœud est renvoyé, mais si plusieurs ID de nœud sont renvoyés, une méthode doit-elle être préférée à l'autre en termes de performances, etc.? Actuellement, je ne vois pas de grande différence à part qu'ETQ est préférable de créer des requêtes plus complexes.
Ils sont identiques. loadByProperties () convertit en fait vos conditions en requête d'entité en interne.
Je recommanderais en fait de faire une requête d'entité vous-même, directement. Il est plus lisible et loadByProperties () pourrait devenir obsolète à l'avenir.