Der Versuch, EntityFieldQuery zu verwenden, um alle Knoten mit einem nicht festgelegten Knotenreferenzfeld zu finden


8

Nach einiger Suche ist das nächste Code-Snippet, das ich gefunden habe:

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

Dies findet alles, wo die Knotenreferenz nicht null ist. Aber wenn ich das ändere !=, =wird nichts zurückgegeben. Ich habe alle Wertekombinationen ausprobiert, die mir einfallen:

  • Weitergeben NULLstatt 'NULL'.
  • Vorbeigehen array()
  • Ich versuche es 1, "<"
  • "", "CONTAINS"
  • "", "="
  • 0, "="

Plus ein paar mehr, probieren Sie einfach alle Kombinationen aus, die mir einfallen.

Wie kann ich das schaffen?

Antworten:


7

So verrückt es auch klingen mag, du kannst es nicht. Normalerweise würden Sie den IS NULLOperator verwenden, um dies zu tun, aber es wird anscheinend von EntityFieldQuery nicht unterstützt:

EntityFieldQuery unterstützt weder isNull noch isNotNull

Ich denke auch, dass die EntityFieldQuery intern verwendet INNER JOIN, anstatt LEFT JOINdass Datensätze, die keinen Wert in Ihrer Konditionstabelle haben, sowieso aus den Abfrageergebnissen ausgeschlossen werden. Das Problem wurde mehrmals gemeldet:



Ich denke, dies war Ihre allererste Antwort auf Drupal.SE ... +1 jetzt, ungefähr 4 Jahre später ... Und herzlichen Glückwunsch zum Erreichen der 100-km-Wiederholung !!!
Pierre.Vriens

Cheers @ Pierre.Vriens, anscheinend bekomme ich ein T-Shirt;)
Clive

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.