Для того, чтобы во 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');
- Log in to post comments