Добавление своей таблицы к views

Главные вкладки

Аватар пользователя Armi Armi 5 сентября 2020 в 11:44

Добрый день. Есть проблема создания связи между таблицой ноды и кастомной таблицы с данными.
Необходимо было прокинуть связь через таблицу поля ноды, везде примеры даны связи с таблицой ноды напрямую через nid. В итоге описал 2 left join через таблицу данных поля ноды. Так вроде работает но только если создавать представление на основе mytable, если в представлении на основе этого типа ноды хочу получить доступ к данным кастомной таблицы начинаются проблемы, поле в relationship отображается и добавляется но поля кастомной таблицы mytable не доступны для добавление в представление ноды. Как правильно описать revers связь?

<?php

mymodule_tables

.views.inc

mymodule_views_data

()
{
 
$data['mytable']['table']['group'] = t('mytable');
   
$data['mytable']['table']['base'] = array(
     
'field' => 'id',
     
'title' => t('mytable'),
    
'help' => t('mytable table contains clients info and can be related to nodes'),
   );
 

  

$data['mytable']['table']['join'] = array(
    
'field_data_field_number' => array(
      
'left_field' => 'field_number_value',
      
'field' => 'num',
    ),
  );

  

$data['field_data_field_number']['table']['join'] = array(
    
'node' => array(
      
'left_field' => 'nid',
      
'field' => 'entity_id',
    ),
  );

  

$data['field_data_field_number']['entity_id'] = array(
    
'title' => t('mytable'),
    
'relationship' => array(
      
'base' => 'node',
      
'base field' => 'nid',
      
'handler' => 'views_handler_relationship',
      
'label' => t('Related node'),
      
'title' => t('Node'),
    ),
  );

  

$data['mytable']['num'] = array(
    
'title' => t('client'),
    
'relationship' => array(
      
'base' => 'field_data_field_number',
      
'base field' => 'field_number_value',
      
'handler' => 'views_handler_relationship',
      
'label' => t('Related field num'),
      
'title' => t('num'),
    ),
  );
  
 
  
$data['mytable']['id'] = array(
    
'title' => t('Client ID'),
    
'field' => array(
      
'handler' => 'views_handler_field',
      
'click sortable' => TRUE,
    ),
    
'sort' => array(
      
'handler' => 'views_handler_sort',
    ),
    
'filter' => array(
      
'handler' => 'views_handler_filter_numeric',
    ),
    
'argument' => array(
      
'handler' => 'views_handler_argument_numeric',
    ),
  );
$data['mytable']['name'] = array(
    
'title' => t('Name'),
    
'help' => t('Just a title'),
    
'field' => array(
      
'handler' => 'views_handler_field',
      
'click sortable' => TRUE,
    ),
    
'sort' => array(
      
'handler' => 'views_handler_sort',
    ),
    
'filter' => array(
      
'handler' => 'views_handler_filter_string',
    ),
    
'argument' => array(
      
'handler' => 'views_handler_argument_string',
    ),
  );
  
  
$data['mytable']['date'] = array(
    
'title' => t('date timestamp'),
    
'field' => array(
      
'handler' => 'views_handler_field_date',
      
'click sortable' => TRUE,
    ),
    
'sort' => array(
      
'handler' => 'views_handler_sort',
    ),
    
'filter' => array(
      
'handler' => 'views_handler_filter_date',
    ),
    
'argument' => array(
      
'handler' => 'views_handler_argument_date',
    ),
  );

  return 

$data;

}

?>