Рейтинг:0

Условие поля объекта с "Не содержит" target_id для нескольких значений поля

флаг in

Объект E имеет ссылку на поле таксономии T с несколькими значениями.

E.field_term.value = [
  ['target_id' => 1],
  ['target_id' => 4],
  ['target_id' => 7],
  ['target_id' => 9],
];

Как запросить список Entity E, который не содержит Term T (term_Id = 7). Я ожидаю что-то вроде этого:

$query = $this->entityTypeManager->getStorage('node')->getQuery();
$query->condition('field_term.entity:taxonomy_term.tid', '7', 'НЕ СОДЕРЖИТ');
    

Но конечно QueryInterface:: условие не принимать НЕ СОДЕРЖИТ как операция. Спасибо за вашу помощь

Kevin avatar
флаг in
Вы пробовали или нет?
mr.Thi avatar
флаг in
Я пробовал, и НЕ В. оба не работали.
4uk4 avatar
флаг cn
Это невозможно для объединенных таблиц. См. https://drupal.stackexchange.com/questions/188969/how-to-use-entityquery-to-select-if-a-multiple-value-entityreference-field-does
mr.Thi avatar
флаг in
Спасибо @4k4. похоже, я должен создать новое поле в объекте E, чтобы проверить условие.
4uk4 avatar
флаг cn
Простейшим методом было бы вычитание двух запросов с помощью array_diff().
mr.Thi avatar
флаг in
@4k4, спасибо. на самом деле, я заставил его работать с двумя запросами, как вы сказали, прежде чем задавать этот вопрос. но я надеюсь, что некоторые решения, подобные %delta, также работают. но с вашего подтверждения я знаю, что в данный момент это недоступно.

Ответить или комментировать

Большинство людей не понимают, что склонность к познанию нового открывает путь к обучению и улучшает межличностные связи. В исследованиях Элисон, например, хотя люди могли точно вспомнить, сколько вопросов было задано в их разговорах, они не чувствовали интуитивно связи между вопросами и симпатиями. В четырех исследованиях, в которых участники сами участвовали в разговорах или читали стенограммы чужих разговоров, люди, как правило, не осознавали, что задаваемый вопрос повлияет — или повлиял — на уровень дружбы между собеседниками.