Estou procurando o ID da entidade do tipo A e sei o ID da entidade B que faz referência a A.
Encontrei algumas boas fontes sobre o EntityFieldQuery. Fiquei surpreso que eu estava obtendo resultados do .NET no google :) (é um sinal da maturidade do Drupal? :). Mas não conseguiu encontrar isso. Por favor ajude ...
Algumas das fontes:
Isto é o que parece com cargas de entidade - você entenderá que preciso dessa consulta :) O wrapper está lá principalmente para a prática. Observe que ele carrega a entidade de destino - muitas consultas.
$b = entity_load('B', array($id));
$bm = entity_metadata_wrapper('B', $sl[$id]);
$tsl = $slm->field_sl_tpref->value();
echo $tsl->id;
EntityFieldQuery
só pode fazer referência a um conjunto de entidades, não pode criar relacionamentos com outras entidades infelizmente. Ele também pode retornar apenas um tipo de entidade por vez; mesmo que você possa criar esses relacionamentos, os resultados não serão confiáveis.Respostas:
Você pode usar, em
target_id
vez de,value
para recuperar entidades com base no ID das entidades referenciadas:fonte
err, o Módulo de Relação é o que você está procurando? Parece que definir relações entre entidades X e Y é o que você deseja fazer. ele possui seu próprio RelationQuery (um wrapper em torno do EFQ) e RelationQueryEndpoints para obter facilmente esse tipo de informação.
fonte
Eu sei que essa é uma pergunta mais antiga, mas para as pessoas que acessam isso do Google, pensei em lançar outra abordagem aqui.
A partir da descrição acima, a instalação possui 2 tipos de entidades, A e B. Referências B com referência à entidade que estou assumindo. Portanto, se você tiver o ID de B, deverá ter um campo com o ID de A armazenado no banco de dados.
Notas de código:
$original_node->nid
esse seria o ID de B$type
este deve ser o tipo de ACódigo
Você também pode configurar referências de entidade bidirecional e fazer a mesma consulta acima ao contrário. Você pode usar um módulo como o CER para garantir que essas referências sejam mantidas atualizadas. Ou configure uma regra para manter a referência atualizada, usei as duas.
fonte
fieldCondition('field_NAME_OF_FIELD', 'target_id', $original_node->nid, '=')
funciona? deve ser alterado parafieldCondition('field_NAME_OF_FIELD', 'target_id', array($original_node->nid), 'IN')
. Não foi possível encontrar nada sobre como aplicar a condição no campo de referência de entidade de vários valores. alguma sugestão?uma solução bastante dinâmica (um pouco suja também, mas eu precisava dela rapidamente) para que você não precise codificar o nome do campo de referência e ele seja automaticamente tratado com o novo campo de referência que você adicionará no futuro:
no seu módulo personalizado:
onde você precisa obter os nós pai, dado o nó filho:
fonte