Drupal 7 - 24小时活动提醒

时间:2012-02-27 17:26:02

标签: sql events drupal date

我正在寻找一个脚本,该脚本将使用为每个事件设置的事件日期向已订阅事件(节点)的所有用户发送电子邮件提醒。

首先,您认为我应该多久运行一次cron?我正在考虑每小时运行它并获取事件日期大于DATE_ADD(NOW(),INTERVAL 24 HOUR)且小于DATE_ADD(NOW(),INTERVAL 25 HOUR)的所有事件。这听起来不错吗?

我正在运行的查询是以下内容,尽管它没有返回任何事件,即使我已经设置了一个事件,以便它从现在起24小时后启动。

$query = db_select('node', 'n');
$query->join('field_data_field_date', 'd', 'n.nid = d.entity_id');

$query
->condition('n.type', 'event', '=')
->condition('d.field_date_value', 'DATE_ADD(NOW(), INTERVAL 24 HOUR)', '>')
->condition('d.field_date_value', 'DATE_ADD(NOW(), INTERVAL 25 HOUR)', '<')
->fields('n')
->fields('d')
;

知道这个问题是什么,或者是否有更好的解决方案?

1 个答案:

答案 0 :(得分:0)

添加复杂表达式与使用数据库API的方法不同,您需要使用addExpression()方法:

$query = db_select('node', 'n')
  ->fields('n')
  ->fields('d');

$query->join('field_data_field_date', 'd', 'n.nid = d.entity_id');

$query->addExpression('d.field_date_value > DATE_ADD(NOW(), INTERVAL 24 HOUR)');
$query->addExpression('d.field_date_value < DATE_ADD(NOW(), INTERVAL 25 HOUR)');