[development] adding a filter to a view

Lluís enboig at gmail.com
Wed Apr 30 14:55:11 UTC 2008


I am creating a module with views, I have just created a page which
creates a view with a filter coming from arguments, but the sql fail.
The code is:
<?php
  $view = views_create_view('llista_assentaments', 'Llista dels assentaments');
  views_view_add_page($view,t('Llista de projectes'),
'comptacau/llista_assentaments', 'table', true, 2, '', 1, false);
//trans

  views_view_add_field( $view,          'node','title',t('nom'),
      TRUE, 0,'views_handler_field_nodelink');
  views_view_add_field( $view, 'comptacau_assentaments',
'projecte_nid', "projecte_nid", TRUE, 0, '');
  views_view_add_filter($view, 'node', 'type',   '=',
'comptacau_assentament', '');
  views_view_add_filter($view, 'node', 'status', '=', 1, '');
  views_view_add_filter($view, 'comptacau_assentaments',
'projecte_nid',       '=',   $nid,      '');

  drupal_set_message("vista: ".nl2br(print_r($view,true))); //debug

  views_sanitize_view($view);
  return views_build_view('page', $view, array(), false);
?>

and the error is:
<code>
SELECT DISTINCT(node.nid), node.title AS node_title, node.changed AS
node_changed, comptacau_assentaments.project AS
comptacau_assentaments_projecte_nid FROM ccc_node node LEFT JOIN
ccc_comptacau_assentaments comptacau_assentaments ON node.nid =
comptacau_assentaments.nid INNER JOIN ccc_node_access na ON na.nid =
node.nid WHERE (na.grant_view >= 1 AND ((na.gid = 0 AND na.realm =
'all') OR (na.gid = 4 AND na.realm = 'comptacau') OR (na.gid = 1 AND
na.realm = '4_comptacau') OR (na.gid = 1 AND na.realm =
'4_comptacau_2'))) AND ( (node.type = 'comptacau_assentament') AND
(node.status = '1') AND
(.projecte_nid = '5') )  //?!?!?!?!?!
ORDER BY node_title ASC
</code>

The problem is it don't detect the table, but I have done a print_r
and it appears well done:

<code>
.........
    [filter] => Array
        (
................
            [2] => Array
                (
                    [tablename] => comptacau_assentaments
                    [field] => projecte_nid
                    [operator] => =
                    [value] => 5
                    [options] =>
                )
        )
.............
</code>

I thought the problem may be when definig the field, but if i remove
this filter, the field is loaded and shown correctly in the screen.

any hint of where is the error?  thanks


-- 
*Si tu fas una foto a una vaca, la vaca no et diu re.
*Envellim quan els records superen les esperances.
*Als llocs desconeguts només s'hi arriba per camins desconeguts.
*Abans d'imprimir aquest missatge, pensa en el medi ambient.


More information about the development mailing list