Cố gắng sử dụng EntityFieldQuery để tìm tất cả các nút có trường tham chiếu nút không được đặt


8

Sau khi tìm kiếm đoạn mã gần nhất tôi đã tìm thấy là:

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

Điều này sẽ tìm thấy mọi thứ mà tham chiếu nút không phải là null. Nhưng nếu tôi thay đổi !=để =nó trả về không có gì. Tôi đã thử tất cả các kết hợp của các giá trị mà tôi có thể nghĩ ra:

  • Đi qua NULLthay vì 'NULL'.
  • Đi qua array()
  • Cố gắng 1, "<"
  • "", "CONTAINS"
  • "", "="
  • 0, "="

Thêm vào đó, chỉ cần thử tất cả các kết hợp tôi có thể nghĩ ra.

Làm thế nào tôi có thể kéo cái này ra?

Câu trả lời:


7

Như điên như nó có thể nghe, bạn không thể. Thông thường, bạn sẽ sử dụng IS NULLtoán tử để làm điều này nhưng dường như không được EntityFieldQuery hỗ trợ:

EntityFieldQuery không hỗ trợ isNull hoặc isNotNull

Ngoài ra, tôi nghĩ rằng EntityFieldQuery sử dụng nội bộ INNER JOIN, thay LEFT JOINvì các bản ghi không có giá trị trong bảng điều kiện của bạn sẽ bị loại trừ khỏi kết quả truy vấn. Vấn đề đã được báo cáo nhiều lần:


Tôi đã kết thúc bằng cách sử dụng này: drupal.org/node/1226622#comment-6809826 Cảm ơn!
mikeytown2

Tôi nghĩ rằng đây là câu trả lời đầu tiên của bạn trên Drupal.SE ... +1 bây giờ, khoảng 4 năm sau ... Và xin chúc mừng vì đã đạt được 100 K rep !!!
Pierre.Vriens

Chúc mừng @ Pierre.Vriens, rõ ràng tôi có một chiếc áo phông;)
Clive

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.