You are here

Drupal8下,views的动态关联关系的实现

我们在给客户定制的文件下载模块里面,客户想对资源进行统计,我们使用了views。不过统计总计的数据库表里面:

我们使用了resource_type,resource_id两个字段存储关联关系,这样模块可以支持多个资源实体类型。一个资源对应一个实体类型。


但是views自身并不直接支持这样的动态的关联。我们尝试了一下,通过自定义代码可以搞定:

/**

 * Implements hook_views_data().

 */

function mydownload_views_data() {

  $data['mydownload_count']['table']['group'] = t('Download statistics');


  $resource_types = mydownload_get_resource_types();

  foreach($resource_types as $resource_type){

    $data['mydownload_count']['table']['join'][$resource_type] = [

        'left_field' => 'id',

        'field' => 'id',

        'extra' => [

          0 => [

            'field' => 'type',

            'value' => $resource_type,

          ],

        ],   

    ];


  }

  ...

}

  

  我开始用的单个的资源类型,尝试了一个关联,可以工作,在此基础上改造成了动态的。


论坛:

Drupal版本: