我目前正在处理的模块遇到一些困难。作为此模块的一部分,我创建了一些显示在表单上的字段。此表单基于自定义实体。
首先,我使用field_create_field($field);
在field_config
表中创建行。然后我使用field_create_instance($instance);
在实例表中创建行,并创建以field_data_field
开头的表。
我遇到的问题是如何在最后正确删除这些表。我尝试过手动删除(通过hook_uninstall),我尝试过field_delete_field,我尝试使用内置于Commerce模块中的remove_instance挂钩。无论哪种方式,我最终都会创建大量field_deleted_data_xxx
个表。这些甚至没有数据,因为我在调用这个似乎创建这些表的函数之前创建了一个手动查询来清空主数据表。
还有其他人遇到过这个问题吗?如何阻止Drupal创建这些表?
答案 0 :(得分:1)
你不能阻止Drupal创建它们,但我相信你可以完全使用field_purge_batch
及其相关功能来摆脱它们。
我真的希望我知道第二个问题的答案(在上面的评论中),我的直觉是,如果你将字段重新附加到字符串,那么该数据将再次自动可用(否则它确实没有'有意义地保留已删除的表格)但我真的不能确定。