하나의 특정 엔터티에서 다중 항목 필드의 특정 필드 항목을 프로그래밍 방식으로 삭제하는 올바른 방법은 무엇입니까? (즉, 필드 유형 또는 인스턴스 및 엔티티 유형이 아닌 특정 필드 및 특정 엔티티)
작동하지 않는 몇 가지 가능성이 있습니다.
- 로 항목을로드하고
entity_load()
필드 항목을 = null 또는 = array ()로 설정 한 다음로 저장하십시오field_attach_update()
. 내가 찾은 가장 가깝지만 데이터베이스에 좀비 null 필드 항목을 남겨두고 양식이 저장되고hook_field_is_empty()
킥 인 될 때까지 양식에 빈 행으로 표시 됩니다 (hook_field_is_empty()
= null 또는 = array ()가 플래그를 지정하도록 구성됨) 비어 있음). - 로 엔티티를로드하고
entity_load()
키로 필드 항목을 설정 해제 한 다음로 저장하십시오field_attach_update()
. 이것은 아무것도하지 않는 것 같습니다-Drupal은 항목이 존재하지 않는 것으로 해석하지 않는 것으로 해석합니다. (이상하게 도이 방법을 시도 할 때 최대 쿼리 시간 만료 시간 초과가 발생합니다) field_attach_delete()
-이것은 너무 무딘 것입니다 : 그것은 엔티티의 모든 필드를 죽입니다.field_purge_data()
-더 좋지만 여전히 무딘 경우 : 특정 항목이 아닌 필드의 모든 항목을 종료합니다.
명확히하기 위해 여러 항목이있는 필드가있는 엔티티를 찾고로드하고 해당 필드에서 제거 해야하는 특정 항목을 찾는 코드가 있습니다. 엔터티의 다른 항목이나 다른 필드를 건드리지 않고 해당 항목을 완전히 제거하고 싶습니다.