Tentando usar EntityFieldQuery para localizar todos os nós com um campo de referência de nó não definido

8

Depois de pesquisar o snippet de código mais próximo que encontrei, é:

->fieldCondition('field_name_ref', 'nid', 'NULL', '!=');

Isso encontrará tudo onde a referência do nó não é nula. Mas se eu mudar o !=que =ele retorna nada. Eu tentei todas as combinações de valores que consigo pensar:

  • Passando em NULLvez de 'NULL'.
  • Passando array()
  • Tentando 1, "<"
  • "", "CONTAINS"
  • "", "="
  • 0, "="

Além disso, mais algumas, apenas tentando todas as combinações em que consigo pensar.

Como posso fazer isso?

jmickela
fonte

Respostas:

7

Por mais louco que possa parecer, você não pode. Normalmente você usaria o IS NULLoperador para fazer isso, mas aparentemente não é suportado pelo EntityFieldQuery:

EntityFieldQuery não suporta isNull ou isNotNull

Também acho que o EntityFieldQuery usa internamente INNER JOIN, em vez de LEFT JOINregistros que não possuem um valor na sua tabela de condições seriam excluídos dos resultados da consulta de qualquer maneira. O problema foi relatado várias vezes:

Clive
fonte
Acabei usando isso: drupal.org/node/1226622#comment-6809826 Obrigado!
precisa saber é o seguinte
Eu acho que essa foi sua primeira resposta no Drupal.SE ... +1 agora, cerca de 4 anos depois ... E parabéns por ter atingido os 100 K!
precisa saber é o seguinte
Felicidades @ Pierre.Vriens, aparentemente eu recebo uma camiseta;)
Clive