我正在寻找一个脚本,该脚本将使用为每个事件设置的事件日期向已订阅事件(节点)的所有用户发送电子邮件提醒。
首先,您认为我应该多久运行一次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')
;
知道这个问题是什么,或者是否有更好的解决方案?
答案 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)');