Перейти к основному содержанию

Программный join таблицы во views 3

Отправлено said от пн, 02/29/2016 - 12:11

Для того, чтобы во views 3 программно к sql-запросу присоединить таблицу используем hook_views_query_alter

// создаем join
$join = new views_join();
$join->table = 'field_data_field_product_collection';
$join->left_table = 'node';
$join->field = 'entity_id';
$join->left_field = 'nid';
$join->type = 'INNER';
$query->table_queue['collection'] = array (
  'alias' => 'collection',
  'table' => 'field_data_field_product_collection',
  'relationship' => 'node',
  'join' => $join,
);

// задаем дополнительные условия для фильтрации
$query->where[] = array(
  'conditions' => array(
    array(
      'field' => 'collection.delta',
      'value' => 0,
      'operator' => '=',
    ),
    array(
      'field' => 'collection.field_product_collection_tid',
      'value' => WEDDING_TID,
      'operator' => '=',
    ),
  ),
);

Другой вариант

$join = new views_join();
$join->table = 'uc_cart_products';
$join->field = 'nid';
$join->left_table = 'node';
$join->left_field = 'nid';
$join->type = 'left';

// дополнительное условие на записи из присоединяемой таблицы
$join->extra = array(
  array(
    'field' => 'cart_id',
    'value' => uc_cart_get_id(),
  )
);
$this->query->add_relationship('uc_cart_products', $join, 'node');

Или более простой вариант присоединения таблицы

$query->add_table('node', NULL, NULL, 'contragent');

 

Теги