如何使用hook_views_data加入表 -- 7 领域 和 views 领域 drupal 相关 的问题

How to join tables with hook_views_data


4
vote

问题

中文

我有两个表活动和activity_map。我需要通过援助加入桌子。以下是hook_views_data的代码。基表正常工作,包括自定义文本处理程序。但是我没有看到与字段部分中的连接表(Activity_Map)字段(Entity_ID,Entity_type),也不是参数或过滤器。我错过了什么吗?

    <?php      /**  * Implements hook_views_data  */ function activity_teamie_views_data() {   $data['activity_teamie']['table']['group'] = t('Activity');   $data['activity_teamie']['table']['base'] = array(     'title' => t('Activity'),     'field' => 'aid',     'help' => t('Activity feed item')   );   $data['activity_teamie']['aid'] = array(     'title' => t('Activity ID (aid)'),     'help' => t('Activity ID'),     'field' => array(       'handler' => 'views_handler_field',       'click sortable' => TRUE     ),     'argument' => array(       'handler' => 'views_handler_argument_numeric'     ),     'filter' => array(       'handler' => 'views_handler_filter_numeric'     ),     'sort' => array(       'handler' => 'views_handler_sort'     )   );   $data['activity_teamie']['template'] = array(       'real field' => 'template',       'title' => 'Activity',       'help' => 'Text describing the activity',       'field' => array(         'handler' => 'activity_teamie_handler_field_activity_text',       ),    );   $data['activity_teamie']['data'] = array(     'title' => 'Data',     'help' => 'Data array',     'field' => array(       'handler' => 'views_handler_field',     ),   );   $data['activity_teamie']['created'] = array(     'title' => t('Created'),     'help' => t('Created timestamp'),     'sort' => array(       'handler' => 'views_handler_sort_date'     )   );   $data['activity_teamie']['updated'] = array(     'title' => t('Updated'),     'help' => t('Updated timestamp'),     'field' => array(       'handler' => 'views_handler_field_date',     ),     'sort' => array(       'handler' => 'views_handler_sort_date'     )   );    /* ACTIVITY MAP */   $data['activity_teamie_map']['table']['group'] = t('Activity');    // Join with the {activity} table   $data['activity_teamie']['table']['join'] = array(     'activity_teamie_map' => array(       'left_field' => 'aid',       'field' => 'aid'     )   );   $data['activity_teamie_map']['aid'] = array(       'title' => t('Aid Map'),       'help' => t('Aid Map'),     'field' => array(           'handler' => 'views_handler_field',   ),       'filter' => array(         'handler' => 'views_handler_filter_numeric'   ),       'argument' => array(         'handler' => 'views_handler_argument_numeric'   )   );   $data['activity_teamie']['entity_type'] = array(     'title' => t('Entity type'),     'help' => t('Entity type of the associated entity'),   'field' => array(         'handler' => 'views_handler_field',   ),     'filter' => array(       'handler' => 'views_handler_filter_string'     ),     'argument' => array(       'handler' => 'views_handler_argument_string'     )   );   $data['activity_teamie']['entity_id'] = array(     'title' => t('Entity ID'),     'help' => t('Entity ID of the associated entity'),   'field' => array(         'handler' => 'views_handler_field',   ),     'argument' => array(       'handler' => 'views_handler_argument_numeric'     )   );   return $data; }   
英文原文

I have two tables activity and activity_map. I need to join both the tables by aid. Below is my code for hook_views_data. Base table is working fine including custom text handler. But I do not see the joined table(activity_map) fields (entity_id, entity_type) either in fields section nor in arguments or filters. Am I missing anything?

  <?php      /**  * Implements hook_views_data  */ function activity_teamie_views_data() {   $data['activity_teamie']['table']['group'] = t('Activity');   $data['activity_teamie']['table']['base'] = array(     'title' => t('Activity'),     'field' => 'aid',     'help' => t('Activity feed item')   );   $data['activity_teamie']['aid'] = array(     'title' => t('Activity ID (aid)'),     'help' => t('Activity ID'),     'field' => array(       'handler' => 'views_handler_field',       'click sortable' => TRUE     ),     'argument' => array(       'handler' => 'views_handler_argument_numeric'     ),     'filter' => array(       'handler' => 'views_handler_filter_numeric'     ),     'sort' => array(       'handler' => 'views_handler_sort'     )   );   $data['activity_teamie']['template'] = array(       'real field' => 'template',       'title' => 'Activity',       'help' => 'Text describing the activity',       'field' => array(         'handler' => 'activity_teamie_handler_field_activity_text',       ),    );   $data['activity_teamie']['data'] = array(     'title' => 'Data',     'help' => 'Data array',     'field' => array(       'handler' => 'views_handler_field',     ),   );   $data['activity_teamie']['created'] = array(     'title' => t('Created'),     'help' => t('Created timestamp'),     'sort' => array(       'handler' => 'views_handler_sort_date'     )   );   $data['activity_teamie']['updated'] = array(     'title' => t('Updated'),     'help' => t('Updated timestamp'),     'field' => array(       'handler' => 'views_handler_field_date',     ),     'sort' => array(       'handler' => 'views_handler_sort_date'     )   );    /* ACTIVITY MAP */   $data['activity_teamie_map']['table']['group'] = t('Activity');    // Join with the {activity} table   $data['activity_teamie']['table']['join'] = array(     'activity_teamie_map' => array(       'left_field' => 'aid',       'field' => 'aid'     )   );   $data['activity_teamie_map']['aid'] = array(       'title' => t('Aid Map'),       'help' => t('Aid Map'),     'field' => array(           'handler' => 'views_handler_field',   ),       'filter' => array(         'handler' => 'views_handler_filter_numeric'   ),       'argument' => array(         'handler' => 'views_handler_argument_numeric'   )   );   $data['activity_teamie']['entity_type'] = array(     'title' => t('Entity type'),     'help' => t('Entity type of the associated entity'),   'field' => array(         'handler' => 'views_handler_field',   ),     'filter' => array(       'handler' => 'views_handler_filter_string'     ),     'argument' => array(       'handler' => 'views_handler_argument_string'     )   );   $data['activity_teamie']['entity_id'] = array(     'title' => t('Entity ID'),     'help' => t('Entity ID of the associated entity'),   'field' => array(         'handler' => 'views_handler_field',   ),     'argument' => array(       'handler' => 'views_handler_argument_numeric'     )   );   return $data; } 
     
     
     

回答列表

4
 
vote
  $data['activity_teamie']['table']['join'] = array(   'activity_teamie_map' => array(     'left_field' => 'aid',     'field' => 'aid'   ) );   

你实际上想加入另一个方式.kk

一般提示,尝试在Drupal核心中思考某种类似的连接关系,并在视图/模块/ $ modure.views.inc

中查找它
  $data['activity_teamie']['entity_id'] = array(   

不是 entity_id 部分 activity_teamie_map

 
$data['activity_teamie']['table']['join'] = array(   'activity_teamie_map' => array(     'left_field' => 'aid',     'field' => 'aid'   ) ); 

You actually want to join the other way round.kk

A general tip, try to think of some kind of similar join relation in Drupal core and look it up in views/modules/$module.views.inc

$data['activity_teamie']['entity_id'] = array( 

Isn't entity_id part of activity_teamie_map?

 
 

相关问题

1  仅在心跳视图中显示用户相关活动  ( Show only user related activity in a heartbeat view ) 
如何创建仅显示用户相关活动的心跳活动?例如,用户1与用户2和3(用户关系模块)有关。登录用户1时,他应该能够从用户2和3而不是来自其他用户的活动;同样,它应该发生在用户2和3.我应该使用 998887662 函数记录活动。 更新 实现这一目标的正统方法是使用 hook_heartbeat_related_uid...

2  与WordPress相比,Drupal菜单管理似乎缺乏:我错过了什么?  ( Drupal menu management seems lacking compared to wordpress am i missing anythin ) 
我正试图了解如何最好地添加到菜单的内容链接。据我所知,有两个有限的方式: 在内容编辑屏幕中,单击"提供菜单链接" 复选框。 缺点:这只会将链接添加到主菜单 - 您无法从内容编辑接口中定位其他菜单? 在菜单编辑屏幕中,您可以添加链接。 缺点:你必须拼出路径。如果此屏幕上有内容查找器,那么您可以轻松地选择内容,...

20  关系与引用与实体参考管理节点引用类型关系的关系  ( Relation vs references vs entity reference for managing node reference type re ) 
引用 实体参考 关系 似乎有几个活动模块都具有相似的功能。任何人都可以提供哪些信息,该分支似乎是最有希望/可能生存的&amp;蓬勃发展?欢迎任何建议。 ...

3  如何构建动态菜单结构  ( How to build a dynamic menu structure ) 
我正在构建一个模块,我想创建两个动态菜单:一个主菜单,每个菜单项是用户所属的组名称(组来自不同的数据库)和辅助菜单固定组的菜单项,操作主菜单中选择的组的特定属性(例如显示组成员)。 做这件事是一个好方法?我找到了这个问题显示如何在模块中创建菜单,但我不确定如何解决菜单项的动态部分。每个用户可以具有不同的主菜单,具体取...

3  Drupal 7中的Ajax自动完成文本字段不适用于Chrome  ( An ajax autocomplete textfield in drupal 7 doesnt work in chrome ) 
在Drupal 7中的Ajax自动完成文本域在Firefox中工作,但在IE和Chrome中不起作用。出现以下错误: An AJAX HTTP error occured. HTTP Result Code: 200 Debugging information follows. Path: http://loc...

2  列出任何有机组可见的会员  ( List members visable in any organic group ) 
我正在努力杜拉努尔7&amp; og&amp;视图网站,我正在尝试编写一个展示用户可以通过任何群体的用户"看到" 的内容。 IE: 用户A - A组成员,AB组,组AC 用户B - B组成员,Group AB 用户C - C组的成员,组AC 查看的输出.. 用户A - 用户A,B,C 用户B - ...

28  该领域的含义是什么意思:在视图中的上下文过滤器中提供的Delta内容类型?  ( What is the meaning of the fielddelta content type offered in contextual filter ) 
在创建新的上下文过滤器以获取视图中,类型列表包括诸如内容的选项:spec(field_spec:delta),其中spec是我附加到视图所接受的内容类型的字段的名称。它出现在某些情况下,但不是列表中提供的所有字段。我找不到此字段的引用。这是什么(field_name:delta)? ...

8  空值“ - 选择 - ”未出现具有状态要求的Select字段  ( Empty value select does not appear for select fields with states requireme ) 
当我使用Drupal 7表格API创建标准选择框时,第一个值(也是在新鲜的"空白表单上选择的一个值" )是 <option selected="selected" value="">- Select -</option> 。此值未以表单定义指定,我没有更改表格。 (这很好) 但是,当我创建第二个选择框时,依赖于第一个...

2  分类学词汇权限  ( Taxonomy vocabulary access ) 
我希望一个角色可以访问 为任何词汇表添加和查看术语, 概述 admin/structure/taxonomy/foo_vocabulary 通过拖动对术语进行排序 但否认访问编辑词汇或其字段。它就像 administer-taxonomy 权限而无需编辑词汇表。 tac 不会帮助。 ...

4  并排添加三个三联雨  ( Add three triptych side by side ) 
我已经制作了自定义主题"custom_stark" 进入.info文件并添加了三联网版 regions[triptych_first] = Triptych first regions[triptych_middle] = Triptych middle regions[triptych_last] = Tri...

17  如何处理/清理过时汇总CSS / JS?  ( How to handle cleanup obsolete aggregated css js ) 
我只是使用css / js聚合中内置的drupal 7,但是css.gz和js.gz文件的文件文件夹以相当快速的速度填充,而且我相信它会在开始完全填补驱动器之前,现在是一段时间,就像任何时候都有一个掌握的情况。 当前文件计数IN / JS是335 当前文件计数/ css是451 是否有任何标准方法我应该用来...

3  为什么删除旧重定向?  ( Why delete old redirects ) 
我有很多,许多重定向(数千)。大多数刚刚将系统(Node / 12345)URL重定向到友好的URL - 但我们也有很多其他人。 我有drupal设置为从不删除旧重定向后尚未访问x的时间后,但仅仅存在的选择,让我觉得有一种合理的原因可能想要。 有很多开销吗?或者只是为了保持列表可管理的?人们通常删除它们,如果是的话...

3  添加没有标题的节点  ( Add node with no title ) 
我想让用户创建没有标题的元素。 在这个明确的情况下,我希望他们输入注册号,如您所能想象在这里没有必要标题。 如何将其从创建页面中删除(节点/添加/节点类型),因此我只能看到我想要的字段(不是标题)? ...

3  如何以编程方式将字段附加到实体?  ( How to attach a field to an entity programmatically ) 
是否可以以编程方式将字段附加到实体? 我想创建一个新实体,说车辆,它具有为车辆品牌定义的单选按钮。我希望这个字段无法通过UI删除或修改。 ...

5  如何为视图中的字段提供默认值3  ( How to provide default value with php code for a field in views 3 ) 
所以我正在尝试创建一个在块中显示的视图,它将显示引用与我当前的节点相同的父节点的节点列表。使用引用模块是一个自定义字段。我在Drupal 7上有意见3。 我图我将在我的自定义字段(Field_ref_Photo_Gallery)上设置一个上下文过滤器,我需要通过PHP代码提供默认值。 我应该如何在最多的drupal ...

3  禁用CKEDITOR总结  ( Disable ckeditor on summary ) 
当我使用ckeditor使用窗口小部件"字段类型文本摘要" 时,我的摘要显示在CKEDITOR格式中。我可以防止这种情况并使用普通格式显示字段吗?挂在表单中,我没有找到摘要的格式;整个身体领域只有一个。 使用ckeditor模块。 ...

7  如何以编程方式插入日期字段值?  ( How can i programmatically insert date field values ) 
我有一堆从DateTime格式的.sql导出中的值(在dB中的日期字段中的相同格式)。我正在使用这些日期值创建节点。如何将这些值插入日期字段? 我试过: $node->field_data_field_date['und'][0]['field_date_value'] = $datetime_value; ...

0  如何从hook_node_presave()输出调试信息?  ( How can i output debug info from hook node presave ) 
我正在学习Drupal 7的模块设计,我想看看hook_node_preSave正在传递哪些(并使用),我如何输出调试信息,以便我学习如何操纵它? 有没有类似的钩子,我可以用来打印出调试信息? ...

6  有可能在D7中保存私人的私人私人拍摄图像样式(缩略图)?  ( Possible to make image styles thumbnails public while original images are kept ) 
我喜欢D7允许您选择文件是否应以每场基础存储在公共或私人文件系统中。 但这是我的问题:是否有可能具有存储在私有文件系统中的图像文件,而通过图像样式创建的缩略图等存储在公共文件系统,所以任何人都可以访问它们?换句话说,我想保护原始图像文件,但不是它们的缩略图。 默认为 theme_image_style 似乎放置了...

2  如何将附加到当前节点的文件/图像引用移动到其他节点?  ( How do you move a file image reference attached to a current node to a different ) 
我找到了上一个问题 ,但我正在努力使它适应我想要完成的事情。 如何使用附加到一个节点的文件/图像,并将其移动到另一个节点或创建新节点并在那里附加它? ...




© 2021 it.wenda123.org All Rights Reserved. 问答之家 版权所有


Licensed under cc by-sa 3.0 with attribution required.