Я ищу идентификатор объекта типа A и знаю идентификатор объекта B, который ссылается на A.
Я нашел несколько хороших источников о EntityFieldQuery. Я был поражен, что я получил результаты от .NET в Google :) (это признак зрелости Drupal? :). Но не удалось найти это. Пожалуйста помоги ...
Некоторые из источников:
Вот как это выглядит с нагрузками на сущности - вы поймете, что мне нужен этот запрос :) Оболочка предназначена в основном для практики. Обратите внимание, что он загружает целевой объект - довольно много запросов.
$b = entity_load('B', array($id));
$bm = entity_metadata_wrapper('B', $sl[$id]);
$tsl = $slm->field_sl_tpref->value();
echo $tsl->id;
EntityFieldQuery
может ссылаться только на один набор объектов, но, к сожалению, не может создавать отношения с другими объектами. Он также может возвращать только один тип объекта за раз, поэтому даже если вы сможете создать эти отношения, результаты будут ненадежными.Ответы:
Вы можете использовать
target_id
вместо того,value
чтобы извлекать сущности на основе идентификатора ссылочных сущностей:источник
э-э, модуль отношений - это то, что вы ищете? Похоже, определение отношений между сущностями X и Y - это то, что вы хотите сделать. у него есть собственный RelationQuery (обертка вокруг EFQ) и RelationQueryEndpoints, чтобы легко получать такую информацию.
источник
Я знаю, что это более старый вопрос, но для людей, которые обращаются к нему из Google, я решил добавить сюда другой подход.
Из приведенного выше описания установка имеет 2 типа сущностей, A и B. Ссылки B с ссылкой на сущность, которую я предполагаю. Так что, если у вас есть идентификатор B, у вас должно быть поле с идентификатором A, хранящимся в базе данных.
Кодовые примечания:
$original_node->nid
это будет идентификатор B$type
Тип пакета - это должен быть тип AКод
Вы также можете установить двусторонние ссылки на сущности и выполнить тот же запрос в обратном порядке. Вы можете использовать такой модуль, как CER, чтобы обеспечить актуальность этих ссылок. Или настройте правило, чтобы поддерживать ссылку в актуальном состоянии, я использовал оба.
источник
fieldCondition('field_NAME_OF_FIELD', 'target_id', $original_node->nid, '=')
работать? должен ли он быть изменен наfieldCondition('field_NAME_OF_FIELD', 'target_id', array($original_node->nid), 'IN')
. Не удалось найти что-либо о том, как применить условие к многозначному полю ссылки на сущность. любое предложение?довольно динамичное решение (немного грязное, но оно мне понадобилось быстро), поэтому вам не нужно жестко кодировать имя поля ссылки, и оно автоматически обрабатывается новым полем ссылки, которое вы добавите в будущем:
в вашем пользовательском модуле:
где вам нужно получить родительские узлы с учетом дочернего узла:
источник