Estoy buscando el ID de la entidad de tipo A y sé el ID de la entidad B que hace referencia a A.
Encontré algunas buenas fuentes sobre EntityFieldQuery. Me sorprendió que obtuviera resultados de .NET en google :) (¿es un signo de la madurez de Drupal? :). Pero no logró encontrar esto. Por favor ayuda ...
Algunas de las fuentes:
Esto es lo que parece con las cargas de entidades: comprenderá que necesito esa consulta :) El contenedor está allí para practicar principalmente. Tenga en cuenta que carga la entidad objetivo, muchas consultas.
$b = entity_load('B', array($id));
$bm = entity_metadata_wrapper('B', $sl[$id]);
$tsl = $slm->field_sl_tpref->value();
echo $tsl->id;
EntityFieldQuery
solo puede hacer referencia a un conjunto de entidades, desafortunadamente no puede crear relaciones con otras entidades. También solo puede devolver un tipo de entidad a la vez, por lo que incluso si pudiera crear estas relaciones, los resultados no serían confiables.Respuestas:
Puede usar en
target_id
lugar devalue
recuperar entidades basadas en la ID de las entidades referenciadas:fuente
err, ¿es el módulo de relación lo que está buscando? Parece que definir relaciones entre entidades X e Y es lo que quieres hacer. tiene su propio RelationQuery (un contenedor alrededor de EFQ) y RelationQueryEndpoints para obtener fácilmente este tipo de información.
fuente
Sé que esta es una pregunta anterior, pero para las personas que llegan a esto desde Google, pensé que lanzaría otro enfoque aquí.
De la descripción anterior, la configuración tiene 2 tipos de entidad, A y B. B hace referencia a A con la referencia de entidad que supongo. Entonces, si tiene la identificación de B, debe tener un campo con la identificación de A almacenada en la base de datos.
Notas de código:
$original_node->nid
esta sería la ID de B$type
este debería ser el tipo de ACódigo
También puede configurar referencias de entidades bidireccionales y hacer la misma consulta al revés. Puede usar un módulo como CER para asegurarse de que esas referencias se mantengan actualizadas. O configure una regla para mantener actualizada la referencia, he usado ambos.
fuente
fieldCondition('field_NAME_OF_FIELD', 'target_id', $original_node->nid, '=')
funcionará? debe ser cambiado afieldCondition('field_NAME_OF_FIELD', 'target_id', array($original_node->nid), 'IN')
. No se pudo encontrar nada sobre cómo aplicar la condición en el campo de referencia de entidad multivalor. ¿cualquier sugerencia?una solución bastante dinámica (un poco sucia también, pero la necesitaba rápidamente), por lo que no necesita codificar el nombre del campo de referencia y se maneja automáticamente con un nuevo campo de referencia que agregará en el futuro:
en su módulo personalizado:
donde necesita obtener los nodos primarios dado el nodo secundario:
fuente