Я программирую 15 лет, 10 лет на PHP, но это мой первый проект на Drupal. Использование Друпал 9.
Я пытаюсь получить объект (пользовательский тип контента), который имеет 2 многозначных поля объекта (пользователя). Если значение, которое у меня есть, находится в одном поле, я хочу получить другое. Проблема в том, что я не могу понять, как запросить сущность, когда скалярное значение, которое у меня есть, находится в списке. Вот что у меня есть:
вернуть \Drupal::entityQuery('узел')
->условие('тип', 'osj_relationships')
->условие('field_supervised_reps', [$userId], 'IN')
->выполнить();
Что генерирует этот SQL:
'ВЫБРАТЬ "base_table"."vid" КАК "vid", "base_table"."nid" КАК "nid"
ОТ
"узел" "базовая_таблица"
ВНУТРЕННЕЕ СОЕДИНЕНИЕ "node_field_data" "node_field_data" ON "node_field_data"."nid" = "base_table"."nid"
ВНУТРЕННЕЕ СОЕДИНЕНИЕ "node__field_supervised_reps" "node__field_supervised_reps" ON "node__field_supervised_reps"."entity_id" = "base_table"."nid"
ГДЕ ("node_field_data"."type" = 'osj_relationships') И ("node__field_supervised_reps"."field_supervised_reps_target_id" IN ('2458'))'
Вторая часть предложения WHERE ищет значение поля в моем параметре. Мне нужно, чтобы он искал мой параметр в поле. Я также пробовал CONTAINS, но это, похоже, предполагает, что значение поля является строкой, а не массивом. Если бы я мог перевернуть это предложение WHERE, это было бы идеально. т.е.
(('2458') IN "node__field_supervised_reps"."field_supervised_reps_target_id")
Я полагаю, что мог бы использовать CONTAINS, если бы мог взорвать список полей, но это могло бы привести к ложным попаданиям.
Какие-либо предложения?