我试图弄清楚节点是如何映射回它们包含的用于学习目的的字段的。这是怎么做到的?
最佳答案
在 Drupal 7 中,您有实体和字段;字段附加到实体。节点是实体的实现(节点模块实现了 hook_entity_info()
和其他此类 Hook ),因此它可以具有字段。
所有字段/实体关系数据都存储在表 field_data_field_x
和 field_revision_field_x
或类似表中(如果启用节点修订,后者可能存储字段数据的修订)。
这些表中的 entity_id
列是节点的 ID,bundle
是节点的内容类型。 revision_id
是节点的修订 ID,同样只有在启用节点修订时才真正有用。
更新
在 Drupal 术语中,内容类型是 bundle
并且 bundle
附加到实体(在本例中为 node
实体)。当您创建一个新的内容类型时,它会存储在 node_type
表中,当缓存被清除时(在所有模块上调用 hook_entity_info
)node_entity_info()
函数从内容类型构建一个包列表(查看该函数中开始的位 foreach (node_type_get_names() as $type => $name) {
, node_type_get_names
获取所有内容类型的列表)。
如上所述,字段可以附加到实体,因此字段可以附加到具有 bundle
增量(如果您愿意)的节点。
关于php - Drupal 7 节点 --> 数据库中的字段映射,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7773025/