CakePHP根据日期自定义搜索

时间:2014-08-04 17:35:34

标签: php mysql cakephp

我想根据branch_id或date或日期之间搜索表中的数据。

CakePHP中的查询应该是什么。

在控制器中查询:

$branchId = $_GET['data']['BranchDailyReport']['branch_id'];
$from_date = $_GET['data']['BranchDailyReport']['from_date'];
$to_date = $_GET['data']['BranchDailyReport']['to_date'];
$condition = array('OR' => array('BranchDailyReport.branch_id =' => $branchId,
                    'BranchDailyReport.date <= ' => $from_date,
                    'BranchDailyReport.date >= ' => $to_date
                )
            );

enter image description here

2 个答案:

答案 0 :(得分:1)

您应该使用BETWEEN MySql运算符

$condition = array('OR' => array('BranchDailyReport.branch_id =' => $branchId,
                'BranchDailyReport.date BETWEEN ? AND ? ' => array($from_date, $to_date)
            )
        );

答案 1 :(得分:1)

要查找两个日期之间的日期,需要为AND。 您可以在OR条件中使用AND来查找两个日期:

$conditions = array(
    'OR' => array(
        'BranchDailyReport.branch_id =' => $branchId,
        'AND' => array(
            'BranchDailyReport.date <= ' => $from_date,
            'BranchDailyReport.date >= ' => $to_date
        )
    )
);

通过该表单的外观,您不需要“branch_id或日期或日期之间”..您可能希望在日期之间使用branch_id AND“...

$conditions = array(
    'BranchDailyReport.branch_id =' => $branchId,
    'BranchDailyReport.date <= ' => $from_date,
    'BranchDailyReport.date >= ' => $to_date
);

(旁注) 此外,如果您正在使用CakePHP,则应使用$this->request->data来访问$_GET个变量。如果您在模型中,则将$this->request->data作为函数参数传递。