2014-11-21 2 views
0

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

// Base таблицы для настраиваемого объекта является «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, внутреннее соединение работает, но мнения не перечисляя все поля узла, как я хочу, чтобы отобразить некоторые полей из узлов тоже !!. Я думаю, что мне не хватает информации, чтобы рассказать о том, что отношения - это не только полевая таблица, но и узел в целом!

ответ

0

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

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'), 
); 
}