CakePHP找到3条相同的记录,然后继续下面的3条记录


CakePHP find 3 same records then continue with following 3 records

我有一个名为Task的模型,其中包含以下字段:

  1. trade_id
  2. site_id
  3. third_email_alert_date

我试图在任务模型上做一个查找(),其中有3个任务具有相同的site_idtrade_id作为相应的请求数据,然后我将发送一封电子邮件并填充third_email_alert_date字段。

所以本质上它应该这样做:

  1. 查找最近3个具有相同trade_idsite_id的任务
  2. 发送电子邮件并在third_email_alert_date中填充电子邮件发送的日期
  3. 从设置了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_idsite_id匹配的所有记录,以及最近创建的顺序。

我似乎不知道如何从新更新的记录中找到最后3个并重新计数。什么好主意吗?

设置TINYINT字段,默认为false。当一封电子邮件被发送时,将三个已发送的电子邮件标记为true,然后在您的查找中只包含电子邮件发送字段。

$tasks= $this->Task->find('all', array(
    'conditions' => $task_conditions + ['email_sent' => false],
    'order' => 'created DESC'
    )
);

或者,如果需要日期,只需在这三个地方都加上日期,然后将排序条件改为date_field => null