Cách thích hợp để lập trình xóa một mục nhập trường cụ thể cho trường đa mục từ một thực thể cụ thể là gì? (đó là các trường cụ thể và các thực thể cụ thể, không phải loại trường hoặc trường hợp và loại thực thể)
Đây là một số khả năng tôi đã xem xét mà không hoạt động:
- Tải thực thể với
entity_load()
, đặt mục nhập trường thành = null hoặc = mảng (), sau đó lưu vớifield_attach_update()
. Đó là lần gần nhất tôi tìm thấy nhưng nó để lại một mục nhập trường rỗng trong cơ sở dữ liệu hiển thị dưới dạng một hàng trống trên biểu mẫu cho đến khi biểu mẫu được lưu vàhook_field_is_empty()
có thể khởi động (hook_field_is_empty()
được định cấu hình sao cho = null hoặc = mảng () sẽ gắn cờ như trống rỗng). - Tải thực thể bằng
entity_load()
, bỏ đặt mục nhập trường bằng phím, sau đó lưu vớifield_attach_update()
. Điều này dường như không làm gì cả - có vẻ như Drupal diễn giải mục nhập không ở đó như một dấu hiệu để không sửa đổi nó. (kỳ lạ là đôi khi tôi cũng nhận được thời gian hết hạn truy vấn tối đa khi thử phương pháp này) field_attach_delete()
- điều này quá cùn: nó giết tất cả các trường cho thực thểfield_purge_data()
- tốt hơn, nhưng vẫn quá cùn: nó giết tất cả các mục của trường, không phải các mục cụ thể
Vì vậy, để làm rõ, tôi đã có mã tìm (và tải) một thực thể có một trường có nhiều mục và tìm một mục cụ thể trên trường đó cần phải xóa. Tôi muốn xóa hoàn toàn mục đó, mà không cần chạm vào bất kỳ mục nào khác hoặc bất kỳ trường nào khác trên thực thể.