2014-11-21 74 views
0

我只有一個基表具有自定義實體,並且它的節點及其字段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工作,內部連接工作,但意見不上市節點的所有領域,因爲我想要顯示的一些來自節點的字段也是!!我想我錯過了一些信息來表達這種觀點,即關係不僅僅是現場表,而是整個節點!

回答

0

我通過從entityreference複製一些代碼來修復它。我必須爲這種關係使用不同的視圖處理程序,併爲該關係添加其他屬性

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