CakePHP找到3条相同的记录,然后继续跟踪3条记录

时间:2016-10-27 13:12:32

标签: php cakephp

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

  1. trade_id
  2. site_id
  3. third_email_alert_date
  4. 我正在尝试在Task模型上执行find(),其中有3个任务与相应的请求数据具有相同的site_idtrade_id,然后我将发送一封电子邮件并填充third_email_alert_date字段。

    所以实质上它应该做到以下几点:

    1. 使用相同的trade_idsite_id
    2. 查找最近3个任务
    3. 发送电子邮件并填写third_email_alert_date以及发送电子邮件的日期
    4. 在设置third_email_alert_date的记录之后,再次从记录开始计数。
    5. 这就是我所拥有的:

      任务条件:

                          $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并再次从新更新的记录中进行计数。有什么想法吗?

1 个答案:

答案 0 :(得分:0)

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

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

或者,如果您需要日期,只需用日期标记所有三个日期,然后更改date_field =>的排序条件空