2012-02-27 57 views
0

我正在尋找一個腳本,它將使用爲每個事件設置的事件日期向所有訂閱了事件(節點)的用戶發送電子郵件提醒。Drupal 7 - 24小時事件提醒

首先,您認爲我應該多久運行一次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

添加複雜的表達式很喜歡與數據庫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)');