【问题标题】:Drupal 7 - 24 hour event reminderDrupal 7 - 24 小时事件提醒
【发布时间】:2012-02-27 17:26:01
【问题描述】:

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

首先,您认为我应该多久运行一次 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')
;

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

【问题讨论】:

    标签: sql events drupal date


    【解决方案1】:

    添加复杂的表达式并不像使用数据库 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)');
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-02-24
      • 1970-01-01
      • 2018-01-23
      • 2016-07-16
      相关资源
      最近更新 更多