Взаимосвязь просмотров с пользовательским объектом и узлом

У меня есть пользовательский объект только с базовой таблицей, и на него ссылается узел с его полем field_a. Теперь я хочу создать отношения между этими двумя объектами (узел и мой пользовательский объект). Я могу получить результат работы, но я не получаю поля узла, перечисленные в разделе поля представлений.

// Базовая таблица для пользовательской сущности - "Clinical_trial_research_sites"

function clinical_trial_views_data_alter(&$data) {
 $data['clinical_trial_research_sites']['node'] = array(
    'title' => t('Clinical Trial'),
    'help' => t('Field Reference Appear in Location Content type.'),
    // Information of the referenced table!!
    'relationship' => array(
      'handler' => 'views_handler_relationship',
      'label' => t('Location'),
      'base' => 'field_data_field_site_comp_code', // node field table name
      'base field' => 'field_site_comp_code_value', // field column name of node field
      'relationship field' => 'site_comp_code', // This is referencing field in my custom entity
    ),
  );
}

Я могу заставить работать sql, работать внутреннее соединение, но view не перечисляет все поля узла, так как я хочу отобразить некоторые поля из узлов!! Я думаю, что мне не хватает некоторой информации, чтобы сказать представлениям, что связь не только с таблицей полей, но и с узлом в целом!!

1 ответ

Решение

Я исправил это, скопировав часть кода из ссылки на сущность. Я должен использовать другой обработчик представлений для этого отношения и добавить другие атрибуты для этого отношения

function clinical_trial_views_data_alter(&$data) {

  $data['clinical_trial_research']['clinical_trial_research_sites'] = array(
    'title' => t('Clinical Trial Research Sites'),
    'help' => t('Field Reference Appear in Clinical Trial Research Sites.'),
    'relationship' => array(
      'handler' => 'views_handler_relationship',
      'label' => t('Clinical Trial Research Sites'),
      'base' => 'clinical_trial_research_sites',
      'base field' => 'study_num',
      'relationship field' => 'study_num',
    ),
  );
  // The reference field in the node entity is not entity reference , its just a basic text field
  $data['clinical_trial_research_sites']['site_comp_code']['relationship'] = array(
    'handler' => 'views_handler_relationship_entity_reverse',
    'field_name' => 'field_site_comp_code',
    'field table' => 'field_data_field_site_comp_code',
    'field field' => "field_site_comp_code_value",
    'base' => 'node',
    'base field' => 'nid',
    'title' => t('Referencing entity'),
    'help' => t('Field Reference Appear in Location Content type.'),
    'title' => t('Location'),
  );
}
Другие вопросы по тегам