I am trying to figure out how add a relationship in a view_data...
I have a hook_views_data which sets up the base table and a group called List. It has two tables
- Main List
- List Contents
And they are related via a list_id. I have a table -> join to join the table with the list contents and all that fun stuff and that all seems to be working. But when I add a relationship for List Contents it won't show any List Contents fields.
So I can get List Name and List ID no problem, I add a relationship to List and a contextual filter for List ID but after I add a relationship I still cannot access any of the $data['list']
array members (so product id or nid or what not).
Any idea what I am missing?
$data['lists']['table']['group'] = t('Lists');
$data['lists']['table']['base'] = array(
'field' => 'list_id',
'title' => t('Lists'),
'help' => t('TODO:'),
'entity type' => 'commerce_product',
'access query tag' => 'commerce_product_access',
);
$data['lists']['table']['join'] = array(
'commerce_List' => array(
'left_field' => 'list_id',
'field' => 'list_id'
)
);
// Expose the List id.
$data['lists']['list_id'] = array(
'title' => t('List ID'),
'help' => t("The List ID."),
'field' => array(
'handler' => 'views_handler_field_numeric',
'click sortable' => TRUE,
),
'filter' => array(
'handler' => 'views_handler_filter_numeric',
),
'sort' => array(
'handler' => 'views_handler_sort',
),
'argument' => array(
'handler' => 'views_handler_argument_string',
),
'relationship' => array(
'title' => t('List'),
'help' => t("Relate this List to its contents"),
'handler' => 'views_handler_relationship',
'base' => 'commerce_List',
'base field' => 'list_id',
'field' => 'list_id',
'label' => t('List contents'),
),
);
// Expose the List name.
$data['lists']['name'] = array(
'title' => t('List Name'),
'help' => t('List name'),
'field' => array(
'handler' => 'views_handler_field',
'click sortable' => TRUE,
),
'sort' => array(
'handler' => 'views_handler_sort',
),
'filter' => array(
'handler' => 'views_handler_filter_string',
),
'argument' => array(
'handler' => 'views_handler_argument_string',
)
);
// Expose the product ID.
$data['list']['product_id'] = array(
'title' => t('Product ID'),
'help' => t('The unique internal identifier of the product.'),
'field' => array(
'handler' => 'commerce_product_handler_field_product',
'click sortable' => TRUE,
),
'filter' => array(
'handler' => 'views_handler_filter_numeric',
),
'sort' => array(
'handler' => 'views_handler_sort',
),
'relationship' => array(
'title' => t('Product'),
'help' => t("Relate this List to its owner's user account"),
'handler' => 'views_handler_relationship',
'base' => 'commerce_product',
'base field' => 'product_id',
'field' => 'product_id',
'label' => t('List product display'),
),
);
// Expose the product type.
$data['list']['nid'] = array(
'title' => t('Nid'),
'help' => t('The human-readable name of the type of the product.'),
'sort' => array(
'handler' => 'views_handler_sort',
),
'relationship' => array(
'title' => t('Product display (node)'),
'help' => t("Relate this List to its owner's user account"),
'handler' => 'views_handler_relationship',
'base' => 'node',
'base field' => 'nid',
'field' => 'nid',
'label' => t('List product display'),
),
);
// Expose the creator uid.
$data['lists']['uid'] = array(
'title' => t('Uid'),
'help' => t("The owner's user ID."),
'field' => array(
'handler' => 'views_handler_field_user',
'click sortable' => TRUE,
),
'argument' => array(
'handler' => 'views_handler_argument_user_uid',
'name field' => 'name', // display this field in the summary
),
'filter' => array(
'title' => t('Owner'),
'handler' => 'views_handler_filter_user_name',
),
'sort' => array(
'handler' => 'views_handler_sort',
),
'relationship' => array(
'title' => t('Owner'),
'help' => t("Relate this List to its owner's user account"),
'handler' => 'views_handler_relationship',
'base' => 'users',
'base field' => 'uid',
'field' => 'uid',
'label' => t('List owner'),
),
);
// Expose links to operate on the product.
$data['list']['delete_List'] = array(
'field' => array(
'title' => t('Delete'),
'help' => t('Provide a simple link to delete the product from the List.'),
'handler' => 'commerce_List_handler_field_product_link_delete',
),
);