[development] views: chaining tables
Lluís
enboig at gmail.com
Tue May 5 15:26:25 UTC 2009
I am have a node view which should show data from a 3rd table:
node->vid relates to node_cc_proveidors->vid
node_cc_assentaments->provedir_nid relates to node_cc_proveidors->nid
So starting from {node} I should get node_cc_assentaments->valor ; in
SQL what I want is similar to:
SELECT title, valor FROM cc2_node node
LEFT JOIN cc2_node_cc_proveidors node_cc_proveidors ON
node_cc_proveidors.vid = node.vid
LEFT JOIN cc2_node_cc_assentaments node_cc_assentaments ON
node_cc_assentaments.proveidor_nid = node_cc_proveidors.nid
WHERE type IN ('proveidor')
Any hint?
thanks
Right now my view looks like this.
<?php
/**
* Implementation of hook_views_data()
*/
function cc_proveidors_views_data() {
$data['node_cc_proveidors']['table']['group'] = 'ComptaCAU
Proveïdors'; //trans
$data['node_cc_proveidors']['table']['join'] = array(
'node' => array(
'left_field' => 'vid',
'left_table' => 'node',
'field' => 'vid',
),
'cc_proviedors_assentaments' => array( //alias for {node_cc_assentaments}
'left_table' => 'node_cc_assentaments',
'left_field' => 'proveidor_nid',
'table' => 'node_cc_assentaments',
'field' => 'nid',
)
);
$data['node_cc_proveidors']['nif'] = array(
'title' => 'Nif del proveïdor', //trans
'help' => '.', //trans
'field' => array(
'field' => 'nif',
'handler' => 'views_handler_field',
'click sortable' => TRUE,
),
'filter' => array(
'handler' => 'views_handler_filter_string',
),
'argument' => array(
'handler' => 'views_handler_argument_string',
),
'sort' => array(
'handler' => 'views_handler_sort',
),
);
$data['cc_proviedors_assentaments']['table']['group'] = 'ComptaCAU
Proveïdors 2'; //trans
$data['cc_proviedors_assentaments']['table']['join'] = array(
'node_cc_proveidors' => array(
'left_table' => 'node_cc_assentaments',
'left_field' => 'nid',
'field' => 'proveidor_nid',
'table' => 'cc_assentaments',
),
);
$data['cc_proviedors_assentaments']['nid'] = array(
'title' => 'Diners gastats al proveidor', //trans
'help' => 'Llista totes les despeses del proveïdor, permetent
agrupar-les i fer totals.', //trans
'field' => array(
'real field' => 'valor',
'handler' => 'views_handler_field',
'click sortable' => TRUE,
),
);
return $data;
}
--
*La vida és com una taronja, què esperes a exprimir-la?
*Si creus que l'educació és cara, prova la ignorància.
*La vida és com una moneda, la pots gastar en el que vulguis però
només una vegada.
*Abans d'imprimir aquest missatge, pensa en el medi ambient.
More information about the development
mailing list