CakePHP Query中替代strtotime()

时间:2013-08-01 20:03:27

标签: mysql cakephp cakephp-2.0

我在CakePHP 2.0应用程序中有一个查询,它检索特定客户和特定合同的记录列表,所有这些都在过去三个月内完成:

$jobsheets = $this->Jobsheet->find('all', array(
    'conditions' => array(
        'Jobsheet.contract' => $contractid,
        'Jobsheet.deleted' => '0',
        'Jobsheet.closed' => '0',
        'Jobsheet.jobdate >' => date('Y-m-d', strtotime("-3 month"))
    ),
    'recursive' => 2,
    'order' => 'Jobsheet.jobdate DESC'
));

然而,这已经证明是有问题的,我被要求实施替代方案。我可以用SQL查询的形式编写替代方法,但我想尽可能多地坚持使用CakePHP的查询构建器。如果这是不可能的,那么我将选择SQL路由。但就目前而言,我很欣赏date('Y-m-d', strtotime("-3 month"))代码的替代方案。

1 个答案:

答案 0 :(得分:2)

$jobsheets = $this->Jobsheet->find('all', array(
    'conditions' => array(
        'Jobsheet.contract' => $contractid,
        'Jobsheet.deleted' => '0',
        'Jobsheet.closed' => '0',
        'Jobsheet.jobdate' => 'DATE_SUB(NOW(), INTERVAL 3 MONTHS)'
    ),
    'recursive' => 2,
    'order' => 'Jobsheet.jobdate DESC'
));