Попытка использовать EntityFieldQuery для поиска всех узлов с не заданным полем ссылки на узел


8

После некоторого поиска ближайший фрагмент кода, который я нашел:

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

Это найдет все, где ссылка на узел не равна нулю. Но если я изменю !=в =ней ничего не возвращает. Я попробовал все комбинации значений, которые я могу придумать:

  • Проходя NULLвместо 'NULL'.
  • Проходя в array()
  • Попытка 1, "<"
  • "", "CONTAINS"
  • "", "="
  • 0, "="

Плюс еще несколько, просто пробуя все комбинации, которые я могу придумать.

Как я могу это осуществить?

Ответы:


7

Как бы безумно это не звучало, вы не можете. Обычно вы используете IS NULLоператор, чтобы сделать это, но он, очевидно, не поддерживается EntityFieldQuery:

EntityFieldQuery не поддерживает isNull или isNotNull

Также я думаю, что EntityFieldQuery использует внутренне INNER JOIN, а не LEFT JOINзаписи, которые не имеют значения в вашей таблице условий, в любом случае будут исключены из результатов запроса. О проблеме сообщалось несколько раз:


Я закончил тем, что использовал это: drupal.org/node/1226622#comment-6809826 Спасибо!
mikeytown2

Я думаю, что это был ваш первый ответ на Drupal.SE ... +1 сейчас, примерно через 4 года ... И поздравляю с попаданием в 100 K представителя !!!
Pierre.Vriens

Приветствия @ Pierre.Vriens, по-видимому, я получаю футболку;)
Клайв

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.