I have a custom table that contains (for simplicity) two fields:
- id
- client_id
On my node content type, I have an integer type field called: field_dashboard_id. All my nodes have the field_dashboard_id set to ids from the custom table. I have a content view that I would like to also display the client id from the custom table. (FYI I am able to create a view if I use Dashboard Entries instead of Content but I want to use Content and join to Dashboard Entries)
I tried the following code but when I try to add a relationship, I am not seeing my custom table in Views.
/** * Implements hook_views_data(). */ function mydashboard_views_data() { $data = []; $data['mydashboard_site']['table']['group'] = t('Dashboard'); $data['mydashboard_site']['table']['base'] = [ 'field' => 'id', 'title' => t('Dashboard entries'), 'help' => t('Contains a list of dashboard entries.'), ]; $data['mydashboard_site']['table']['join'] = array( 'node' => array( 'left_table' => 'node__field_dashboard_id', 'left_field' => 'entity_id', 'field' => 'id', ), ); $data['mydashboard_site']['id'] = [ 'title' => t('ID'), 'help' => t('Unique Site ID.'), 'field' => [ 'id' => 'numeric', ], 'filter' => [ 'id' => 'numeric', ], 'argument' => [ 'id' => 'numeric', ], 'sort' => [ 'id' => 'standard', ], 'relationship' => [ 'base' => 'node', // The name of the table to join with. 'base field' => 'field_dashboard_id', // The name of the field on the joined table. // 'field' => 'nid' -- see hook_views_data_alter(); not needed here. 'handler' => 'views_handler_relationship', 'label' => t('Default label for the relationship'), 'title' => t('Title shown when adding the relationship'), 'help' => t('More information on this relationship'), 'extra' => [ [ 'field' => 'field_dashboard_id', 'value' => 'value', 'operator' => '=', 'numeric' => true, ], ], ], ]; $data['mydashboard_site']['client_id'] = [ 'title' => t('Client ID'), 'help' => t('The client id'), 'field' => [ 'id' => 'standard', ], 'filter' => [ 'id' => 'string', ], 'argument' => [ 'id' => 'string', ], ]; return $data; }
Update
Also tried the following:
$data['mydashboard_site']['table']['join'] = [ 'node__field_dashboard_id' => [ 'left_field' => 'field_dashboard_id_value', 'field' => 'id', ], ]; 'relationship' => [ 'base' => 'node__field_dashboard_id', // The name of the table to join with. 'base field' => 'entity_id', // The name of the field on the joined table. // ID of relationship handler plugin to use. 'id' => 'standard', // Default label for relationship in the UI. 'label' => t('Example node'), ],
Sponsored by SupremePR