Drupal 7-24小时事件提醒



我想写一个脚本,使用为每个事件设置的事件日期向所有订阅了事件(节点)的用户发送电子邮件提醒。

首先,你认为我应该多久运行一次cron?我想每小时运行一次,并获取事件日期大于date_ADD(NOW(),INTERVAL 24 HOUR)且小于date_ADD的所有事件。这听起来正确吗?

我正在运行的查询如下,尽管它不会返回任何事件,即使我已经设置了一个事件,使它在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')
;

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

添加复杂表达式的工作方式与使用数据库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)');

最新更新