Условие запроса сущности "не равно..."
Проблема:
Мне нужна фильтрация объектов на основе значения поля с множественным выбором.
Я хочу, чтобы мой запрос возвращал все сущности, кроме тех, у которых есть заданное значение ('doe
' для этого примера).
Фактический:
значения с множественным выбором
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);
Необходимо:
Поэтому мне нужно что-то вроде следующего:
$query = \Drupal::entityQuery('node')
->condition('type', 'order')
->condition('field_multiple_choice', '!=', 'doe');
$nids = $query->execute();
$entities = \Drupal::entityManager()->getStorage('node')->loadMultiple($nids);
Как я могу это сделать? Заранее спасибо.
7
Author: kiamlaluno, 2016-05-09
2 answers
Я нашел это!
Я был недалеко, мне просто нужно изменить два последних параметра условия.
$query = \Drupal::entityQuery('node')
->condition('type', 'order')
->condition('field_multiple_choice', 'doe', '!=');
$nids = $query->execute();
$entities = \Drupal::entityManager()->getStorage('node')->loadMultiple($nids);
Как сказано в документе, публичная функция Интерфейс запроса::условие примите следующие аргументы:
condition( $field , $value = NULL , $operator = NULL , $langcode = NULL )
16
Author: Antoine Subit, 2020-04-05 22:19:41
Невозможно проверить наличие сущностей со значением поля , если это поле может быть нулевым.
Вместо этого вы должны использовать условие ORCONDITION, чтобы не существовать ИЛИ :
$query= Drupal::service('entity.query')->get('myentity');
$group = $query->orConditionGroup()
->notExists('my_field')
->condition('my_field', '53', '<>');
$ids = $query->condition($group)->execute();
2
Author: Rafael, 2020-06-12 10:20:33