Drupal 7 - 24-часовое напоминание о событии - PullRequest
0 голосов
/ 27 февраля 2012

Я хочу написать скрипт, который будет отправлять напоминание по электронной почте всем пользователям, которые подписались на событие (узел), используя дату события, которая установлена ​​для каждого события.

Во-первых, как часто, как вы думаете, мне следует запускать 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 голосов
/ 28 февраля 2012

Добавление сложных выражений не совсем так работает с 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)');
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...