【问题标题】:Drupal 7 altering query in viewDrupal 7 在视图中更改查询
【发布时间】:2012-02-17 12:22:57
【问题描述】:

我正在尝试使用 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 虽然它不起作用?!

【问题讨论】:

    标签: drupal view alter


    【解决方案1】:

    请改用hook_view_query_alter(&$view, &$query)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多