【发布时间】:2011-10-14 20:09:48
【问题描述】:
我试图弄清楚节点如何映射回它们包含的字段以用于学习目的。这是怎么做到的?
【问题讨论】:
我试图弄清楚节点如何映射回它们包含的字段以用于学习目的。这是怎么做到的?
【问题讨论】:
在 Drupal 7 中有实体和字段;字段附加到实体。节点是实体的实现(节点模块实现了hook_entity_info() 和其他类似的钩子),因此它可以拥有字段。
所有字段/实体关系数据都存储在表 field_data_field_x 和 field_revision_field_x 或类似表中(如果启用节点修订,后者可能存储字段数据的修订)。
这些表中的entity_id 列是节点的ID,bundle 是节点的内容类型。 revision_id 是节点的修订 ID,同样只有在启用节点修订时才真正有用。
更新
在 Drupal 术语中,内容类型是 bundle 和 bundles 附加到实体(在本例中为 node 实体)。当您创建一个新的内容类型时,它会存储在node_type 表中,并且当缓存被清除(在所有模块上调用hook_entity_info)时,node_entity_info() 函数会从内容类型(具有看看那个函数中以foreach (node_type_get_names() as $type => $name) { 开头的位,node_type_get_names 获取所有内容类型的列表)。
如上所述,字段可以附加到实体,因此字段可以附加到具有bundle 增量(如果您愿意)的节点。
【讨论】:
field_config_instance 实际上是字段和实体类型/包相关的地方
在 D7 中,对于我的情况,field_config_instance 表为我提供了所需的信息。
【讨论】: