This view was working well a month ago, I updated views and Drupal to the latest versions, and now I see that the vocabulary id is not passed to the view query, thus, no results are returned.

$view = new view;
$view->name = 'by_destination';
$view->description = 'Browse by Destination';
$view->tag = '';
$view->view_php = '';
$view->base_table = 'node';
$view->is_cacheable = FALSE;
$view->api_version = 2;
$view->disabled = FALSE; /* Edit this to true to make a default view disabled initially */
$handler = $view->new_display('default', 'Defaults', 'default');
$handler->override_option('sorts', array(
  'changed' => array(
    'order' => 'DESC',
    'granularity' => 'second',
    'id' => 'changed',
    'table' => 'node',
    'field' => 'changed',
    'relationship' => 'none',
  ),
));
$handler->override_option('filters', array(
  'status' => array(
    'operator' => '=',
    'value' => '1',
    'group' => '0',
    'exposed' => FALSE,
    'expose' => array(
      'operator' => FALSE,
      'label' => '',
    ),
    'id' => 'status',
    'table' => 'node',
    'field' => 'status',
    'relationship' => 'none',
  ),
  'type' => array(
    'operator' => 'in',
    'value' => array(
      'forum' => 'forum',
      'book' => 'book',
      'event' => 'event',
      'gallery' => 'gallery',
      'major' => 'major',
      'story' => 'story',
      'studyprogram' => 'studyprogram',
      'university' => 'university',
    ),
    'group' => '0',
    'exposed' => TRUE,
    'expose' => array(
      'use_operator' => 0,
      'operator' => 'type_op',
      'identifier' => 'type',
      'label' => 'Content Type',
      'optional' => 1,
      'single' => 1,
      'remember' => 0,
      'reduce' => 1,
    ),
    'id' => 'type',
    'table' => 'node',
    'field' => 'type',
    'relationship' => 'none',
  ),
  'term_node_tid_depth' => array(
    'operator' => 'or',
    'value' => array(),
    'group' => '0',
    'exposed' => TRUE,
    'expose' => array(
      'operator' => 'term_node_tid_depth_op',
      'label' => 'Destination',
      'use_operator' => 0,
      'identifier' => 'destination',
      'optional' => 1,
      'single' => 1,
      'remember' => 0,
      'reduce' => 0,
    ),
    'type' => 'select',
    'limit' => TRUE,
    'vid' => '3',
    'depth' => '3',
    'id' => 'term_node_tid_depth',
    'table' => 'node',
    'field' => 'term_node_tid_depth',
    'hierarchy' => 1,
    'relationship' => 'none',
    'reduce_duplicates' => 1,
    'views_filter_pack_element_type' => NULL,
  ),
  'content_negotiation' => array(
    'operator' => '',
    'value' => '',
    'group' => '0',
    'exposed' => FALSE,
    'expose' => array(
      'operator' => FALSE,
      'label' => '',
    ),
    'id' => 'content_negotiation',
    'table' => 'node',
    'field' => 'content_negotiation',
    'relationship' => 'none',
  ),
  'vid' => array(
    'operator' => 'in',
    'value' => array(
      '3' => '3',
    ),
    'group' => '0',
    'exposed' => FALSE,
    'expose' => array(
      'operator' => FALSE,
      'label' => '',
    ),
    'id' => 'vid',
    'table' => 'term_data',
    'field' => 'vid',
    'relationship' => 'none',
  ),
));
$handler->override_option('access', array(
  'type' => 'none',
));
$handler->override_option('cache', array(
  'type' => 'time',
  'results_lifespan' => '3600',
  'output_lifespan' => '3600',
));
$handler->override_option('title', 'Browse by Destination');
$handler->override_option('use_pager', '1');
$handler->override_option('distinct', 1);
$handler->override_option('row_plugin', 'node');
$handler->override_option('row_options', array(
  'relationship' => 'none',
  'build_mode' => 'teaser',
  'links' => 0,
  'comments' => 0,
));
$handler = $view->new_display('page', 'Page', 'page_1');
$handler->override_option('path', 'destination/all');
$handler->override_option('menu', array(
  'type' => 'normal',
  'title' => 'All Destinations',
  'description' => '',
  'weight' => '50',
  'name' => 'primary-links',
));
$handler->override_option('tab_options', array(
  'type' => 'none',
  'title' => '',
  'description' => '',
  'weight' => 0,
));

Query when supplying all filters

SELECT DISTINCT(node.nid) AS nid,
   node.changed AS node_changed
 FROM node node 
 LEFT JOIN term_node term_node ON node.vid = term_node.vid
 LEFT JOIN term_data term_data ON term_node.tid = term_data.tid
 WHERE (node.status <> 0) AND (node.type in ('3')) AND (node.vid IN (
  SELECT tn.vid FROM term_node tn
    LEFT JOIN term_hierarchy th ON th.tid = tn.tid
    LEFT JOIN term_hierarchy th1 ON th.parent = th1.tid
    LEFT JOIN term_hierarchy th2 ON th1.parent = th2.tid
    LEFT JOIN term_hierarchy th3 ON th2.parent = th3.tid
  WHERE tn.tid  = 0
    OR th1.tid  = 0
    OR th2.tid  = 0
    OR th3.tid  = 0
  )) AND (node.language ='en' OR node.language ='' OR node.language IS NULL) AND (term_data.vid in (''))
 GROUP BY nid
  ORDER BY node_changed DESC

notice term_data.vid in ('')

Query with blank arguments:

SELECT DISTINCT(node.nid) AS nid,
   node.changed AS node_changed
 FROM node node 
 LEFT JOIN term_node term_node ON node.vid = term_node.vid
 LEFT JOIN term_data term_data ON term_node.tid = term_data.tid
 WHERE (node.status <> 0) AND (node.language ='en' OR node.language ='' OR node.language IS NULL) AND (term_data.vid in ('%s'))
 GROUP BY nid
  ORDER BY node_changed DESC

notice term_data.vid in ('%s')

Comments

alayham’s picture

Title: Vocabulary filter: terndata.vid not passed to the query » Vocabulary filter: termdata.vid not passed to the query
dawehner’s picture

Mh i importet the view and produced the following query:

SELECT DISTINCT(node.nid) AS nid,
node.changed AS node_changed
 FROM node node 
 LEFT JOIN term_node term_node ON node.vid = term_node.vid
 LEFT JOIN term_data term_data ON term_node.tid = term_data.tid
 WHERE (node.status <> 0) AND (term_data.vid in ('2'))
 GROUP BY nid
  ORDER BY node_changed DESC
alayham’s picture

I deleted the view and reimported it, same result.
also, the filter code says:

  'vid' => array(
    'operator' => 'in',
    'value' => array(
      '3' => '3',
    ),

If it is working well, the query should have
AND (term_data.vid in ('3'))
not
AND (term_data.vid in ('2'))

please correct me if I am wrong.

dawehner’s picture

I had to use another vocabulary, because i didn't had one with vid = 3, but i had one with vid = 2

alayham’s picture

Project: Views (for Drupal 7) » Views Filter Pack
Version: 6.x-2.8 » 6.x-1.x-dev
Component: taxonomy data » Code

Disabled views filter pack, now all works fine.