Essayer d'utiliser EntityFieldQuery pour trouver tous les nœuds avec un champ de référence de nœud non défini

8

Après quelques recherches, l'extrait de code le plus proche que j'ai trouvé est:

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

Cela trouvera tout où la référence de nœud n'est pas nulle. Mais si je change le !=pour =qu'il ne retourne rien. J'ai essayé toutes les combinaisons de valeurs auxquelles je peux penser:

  • Passer au NULLlieu de 'NULL'.
  • Passer array()
  • En essayant 1, "<"
  • "", "CONTAINS"
  • "", "="
  • 0, "="

Plus encore, en essayant toutes les combinaisons auxquelles je peux penser.

Comment puis-je retirer cela?

jmickela
la source

Réponses:

7

Aussi fou que cela puisse paraître, vous ne pouvez pas. Normalement, vous utiliseriez l' IS NULLopérateur pour cela, mais il n'est apparemment pas pris en charge par EntityFieldQuery:

EntityFieldQuery ne prend pas en charge isNull ou isNotNull

Je pense également que l'EntityFieldQuery utilise en interne INNER JOIN, plutôt que LEFT JOINles enregistrements qui n'ont pas de valeur dans votre table de conditions seraient de toute façon exclus des résultats de la requête. Le problème a été signalé à plusieurs reprises:

Clive
la source
J'ai fini par utiliser ceci: drupal.org/node/1226622#comment-6809826 Merci!
mikeytown2
Je pense que c'était votre toute première réponse sur Drupal.SE ... +1 maintenant, environ 4 ans plus tard ... Et félicitations pour avoir atteint le 100 K rep !!!
Pierre.Vriens
A bientôt @ Pierre.Vriens, apparemment j'ai un t-shirt;)
Clive