【问题标题】:Drupal 7 Node --> Fields Mapping In DatabaseDrupal 7 节点 --> 数据库中的字段映射
【发布时间】:2011-10-14 20:09:48
【问题描述】:

我试图弄清楚节点如何映射回它们包含的字段以用于学习目的。这是怎么做到的?

【问题讨论】:

    标签: php mysql drupal drupal-7


    【解决方案1】:

    在 Drupal 7 中有实体和字段;字段附加到实体。节点是实体的实现(节点模块实现了hook_entity_info() 和其他类似的钩子),因此它可以拥有字段。

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

    这些表中的entity_id 列是节点的ID,bundle 是节点的内容类型。 revision_id 是节点的修订 ID,同样只有在启用节点修订时才真正有用。

    更新

    在 Drupal 术语中,内容类型是 bundlebundles 附加到实体(在本例中为 node 实体)。当您创建一个新的内容类型时,它会存储在node_type 表中,并且当缓存被清除(在所有模块上调用hook_entity_info)时,node_entity_info() 函数会从内容类型(具有看看那个函数中以foreach (node_type_get_names() as $type => $name) { 开头的位,node_type_get_names 获取所有内容类型的列表)。

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

    【讨论】:

    • 在 GUI 中创建的内容类型如何实现 hook_entity_info?我了解如何存储字段数据,但如何创建表单?
    • 是 field_config_instance 定义了哪些字段与什么搭配?
    • @ChrisMuench:我已经更新了答案,如果您需要任何说明,请告诉我,如果您之前没有深入研究过核心模块,那就太复杂了!
    • 哦,对不起,我想错了,是的,field_config_instance 实际上是字段和实体类型/包相关的地方
    • 少量添加。字段存储是可插拔的,field_data 和 field_revision 表只是 field_storage.module 提供的默认实现。例如,其他实现允许在 MongoDB 中存储字段数据。
    【解决方案2】:

    在 D7 中,对于我的情况,field_config_instance 表为我提供了所需的信息。

    【讨论】:

      猜你喜欢
      • 2014-09-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多