Intentando usar EntityFieldQuery para encontrar todos los nodos con un campo de referencia de nodo no establecido

8

Después de buscar un poco el fragmento de código más cercano que he encontrado es:

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

Esto encontrará todo donde la referencia de nodo no sea nula. Pero si cambio el !=a =no devuelve nada. He probado todas las combinaciones de valores que se me ocurren:

  • Pasando en NULLlugar de 'NULL'.
  • Pasando array()
  • Molesto 1, "<"
  • "", "CONTAINS"
  • "", "="
  • 0, "="

Además de algunos más, solo probando todas las combinaciones que se me ocurren.

¿Cómo puedo lograr esto?

jmickela
fuente

Respuestas:

7

Por loco que parezca, no puedes. Normalmente usaría el IS NULLoperador para hacer esto, pero aparentemente no es compatible con EntityFieldQuery:

EntityFieldQuery no admite isNull o isNotNull

También creo que EntityFieldQuery usa internamente INNER JOIN, en lugar de LEFT JOINeso, los registros que no tienen un valor en su tabla de condiciones se excluirían de los resultados de la consulta de todos modos. El problema ha sido reportado varias veces:

Clive
fuente
Terminé usando esto: drupal.org/node/1226622#comment-6809826 ¡Gracias!
mikeytown2
Creo que esta fue su primera respuesta en Drupal.SE ... +1 ahora, unos 4 años después ... ¡¡¡Y felicidades por alcanzar el representante de 100 K !!!
Pierre.Vriens
Saludos @ Pierre.Vriens, aparentemente recibo una camiseta;)
Clive