Drupal 7节点 - >数据库中的字段映射

Chr*_*nch 9 php mysql drupal drupal-7

我试图找出节点如何映射回它们包含的字段用于学习目的.这是怎么做到的?

Cli*_*ive 9

在Drupal 7中你有实体和领域; 字段附加到实体.节点是实体的实现(节点模块实现hook_entity_info()和其他此类挂钩),因此它可以具有字段.

所有字段/实体关系数据都存储在表field_data_field_x和/ field_revision_field_x或类似表中(如果启用了节点修订,后者可能存储字段数据的修订版).

entity_id这些表中的列是节点的ID,而bundle节点的内容类型.它revision_id是节点的修订版ID,仅在启用了节点修订版时才非常有用.

UPDATE

在Drupal术语中,内容类型是a bundlebundles附加到实体(在这种情况下是node实体).当您创建新的内容类型时,它会存储在node_type表中,当清除缓存(hook_entity_info在所有模块上调用)时,该node_entity_info()函数会根据内容类型构建一个包列表(请查看该函数中的位)启动foreach (node_type_get_names() as $type => $name) {,node_type_get_names获取所有内容类型的列表).

如上所述,字段可以附加到实体,因此字段可以附加到具有delta(如果您愿意)的节点bundle.

  • 次要添加.字段存储是可插入的,field_data和field_revision表只是field_storage.module提供的默认实现.例如,其他实现允许在MongoDB中存储字段数据. (4认同)