Взаимосвязь просмотров с пользовательским объектом и узлом
У меня есть пользовательский объект только с базовой таблицей, и на него ссылается узел с его полем 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'),
);
}