Рейтинг:1

Программная проверка того, что термин таксономии был добавлен к узлу

флаг fr

В настоящее время я проверяю тип и статус узла, используя следующий код.

$query = \Drupal::entityQuery('узел')
  ->условие('статус', 1)
  ->условие('тип', 'content_page')
  ->выполнить();

foreach ($ запрос как $ nid) {
  // ¦
}

Мне нужно знать, был ли добавлен термин таксономии к узлу. Мне не нужно знать имя или идентификатор этого термина, который является термином таксономии из Группа обязательна запас слов.

Какой код я должен использовать для достижения этого?

Рейтинг:2
флаг in

Поскольку вы знаете, что ваш тег всегда будет находиться в одном определенном поле, вы можете использовать существуют() метод в вашем запросе, чтобы получать только идентификаторы сущностей, где это поле имеет значение, то есть не является пустым.

Например:

$entity_ids = \Drupal::entityTypeManager()
  ->getStorage('узел')
  -> получить запрос ()
  ->условие('тип', 'content_page')
  ->условие('статус', 1)
  // Проверяем, есть ли в поле не пустое значение
  -> существует ('MY_TAXONOMY_REF_FIELD')
  // существование('MY_FIELD') эквивалентно условию('MY_FIELD', NULL, 'IS NOT NULL')
  ->выполнить();

Затем загрузите свои сущности:

$entities = \Drupal::entityTypeManager()
  ->getStorage('узел')
  ->loadMultiple($entity_ids);
RepublicOfDavid avatar
флаг fr
Блестяще, работает отлично, большое спасибо sonfd :-)

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

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