【发布时间】: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 虽然它不起作用?!
【问题讨论】: