Drupal 7 изменяет запрос в поле зрения - PullRequest
0 голосов
/ 17 февраля 2012

Я пытаюсь изменить запрос в представлении, используя mymodule_views_pre_execute, и использовал devel, чтобы найти SQL-запрос, который он в данный момент использует, что ниже:

SELECT node.nid AS nid FROM node node LEFT JOIN field_data_field_date
 field_data_field_date ON node.nid = field_data_field_date.entity_id AND
 (field_data_field_date.entity_type = :views_join_condition_0 AND
 field_data_field_date.deleted     = :views_join_condition_1) 
 WHERE ((
 (DATE_FORMAT(field_data_field_date.field_date_value, '%Y-%m-%d\T%H:%i') > :node_date_filter) )AND
(( (node.status = :db_condition_placeholder_2) )))     
LIMIT 10 OFFSET 0

Затем я делаю это снова, используя следующее:

$query = db_select("node", "n");
            $query->addField("n", "nid");
            $query->leftJoin("{field_data_field_date}", "{field_data_field_date}",
            "n.nid = field_data_field_date.entity_id AND field_data_field_date.entity_type = 'node'
            AND field_data_field_date.deleted = '0'");

            $query->where("(DATE_FORMAT(field_data_field_date.field_date_value, '%Y-%m-%d\T%H:%i') > NOW())");
            $query->where("n.status = '1'");

Мне пришлось заменить: views_join_condition_0 на 'node',: views_join_condition_1 на '0' и: node_date_filter на NOW(), хотя я не уверен, правильно ли это путь? Если я уйду: views_join_condition_0,: views_join_condition_1 и: node_date_filter, хотя это не работает ?!

1 Ответ

0 голосов
/ 19 марта 2012

Используйте hook_view_query_alter(&$view, &$query) вместо.

...