web-dev-qa-db-fra.com

La condition EntityQuery "n'est pas égale à ..."

Problème:

J'ai besoin de filtrer les entités en fonction de la valeur d'un champ à choix multiples.
Je veux que ma requête renvoie toutes les entités sauf celles qui ont une valeur donnée ('doe' pour cet exemple).

Réel:

valeurs à choix multiples

foo|Choice 1
bar|Choice 2
doe|Choice 3

MyController.php

$query = \Drupal::entityQuery('node')
       ->condition('type', 'order');
$nids = $query->execute();
$entities = \Drupal::entityManager()->getStorage('node')->loadMultiple($nids);

Avoir besoin :

J'ai donc besoin de quelque chose comme ci-dessous:

$query = \Drupal::entityQuery('node')
       ->condition('type', 'order')
       ->condition('field_multiple_choice', '!=', 'doe');
$nids = $query->execute();
$entities = \Drupal::entityManager()->getStorage('node')->loadMultiple($nids);

Comment puis-je faire ? Merci d'avance.

3
Antoine Subit

Je l'ai trouvé !

Je n'étais pas loin, je viens d'inverser les deux derniers paramètres de la condition.

$query = \Drupal::entityQuery('node')
       ->condition('type', 'order')
       ->condition('field_multiple_choice', 'doe', '!=');
$nids = $query->execute();
$entities = \Drupal::entityManager()->getStorage('node')->loadMultiple($nids);

Comme le dit le doc, fonction publique QueryInterface :: condition prenez les arguments suivants:

condition( $field , $value = NULL , $operator = NULL , $langcode = NULL )
10
Antoine Subit