我有一个名为Task的模型,其中包含以下字段:
-
trade_id
-
site_id
-
third_email_alert_date
我试图在任务模型上做一个查找(),其中有3个任务具有相同的site_id
和trade_id
作为相应的请求数据,然后我将发送一封电子邮件并填充third_email_alert_date
字段。
所以本质上它应该这样做:
- 查找最近3个具有相同
trade_id
和site_id
的任务 - 发送电子邮件并在
third_email_alert_date
中填充电子邮件发送的日期 - 从设置了
third_email_alert_date
的记录后重新开始计数。
我有:
任务条件: $task_conditions = array(
'Task.trade_id' => $this->request->data['Task']['trade_id'],
'Task.site_id' => $this->request->data['Task']['site_id']
);
按创建日期降序排序,以便我们有最新的任务在前面:
$tasks= $this->Task->find('all', array(
'conditions' => $task_conditions,
'order' => 'created DESC'
)
);
这给出了trade_id
和site_id
匹配的所有记录,以及最近创建的顺序。
我似乎不知道如何从新更新的记录中找到最后3个并重新计数。什么好主意吗?
设置TINYINT字段,默认为false。当一封电子邮件被发送时,将三个已发送的电子邮件标记为true,然后在您的查找中只包含电子邮件发送字段。
$tasks= $this->Task->find('all', array(
'conditions' => $task_conditions + ['email_sent' => false],
'order' => 'created DESC'
)
);
或者,如果需要日期,只需在这三个地方都加上日期,然后将排序条件改为date_field => null