在cakephp中根据年份和月份检索数据

时间:2015-02-09 21:02:06

标签: php cakephp cakephp-2.0 cakephp-2.1 cakephp-2.3

我正在尝试创建一个get语句函数,我在定义日期范围时遇到了一些问题。

数据将通过以下格式的get方法传递:?year = yyyy& month = mm 表格的相关列有日期时间类型( 2012-02-01 )。

我检查了 TimeHelper 类,尤其是TimeHelper::daysAsSql($begin, $end, $fieldName, $timezone = NULL),但我不确定它是否适用于此情况。

我在想是否可以使用年份和月份这两个变量以Y-m的格式创建日期,然后在检索数据的条件中使用它,但我确信有更有效和正确的方法。有人可以帮忙吗?

$user_id = $Client['Client']['id'];
    $year = $this->request['url']['year'];
    $month = $this->request['url']['month'];
    //$date_created = date('Y-m');


  if (!empty($user_id) && (!empty($date_created))) {


        $Reports = $this->Report->find('all', array(
        'fields' => array('amount','currency','date_created','invoice_no'),
        'conditions' => array(
            'Report.client_id'=> $user_id,
            'Report.date_created >=' => $date_created, 
            'Report.date_created <=' => $date_created

             ),
        )
    );

1 个答案:

答案 0 :(得分:1)

MONTH (dateColumn)返回表示指定日期月份的整数。

(dateColumn)返回表示指定日期年份的整数。

InCakephp用作

$user_id = $Client['Client']['id'];
    $year = $this->request['url']['year'];
    $month = $this->request['url']['month'];
    //$date_created = date('Y-m');


    if (!empty($user_id) && (!empty($date_created))) {


        $Reports = $this->Report->find('all', array(
                'fields' => array('amount','currency','date_created','invoice_no'),
                'conditions' => array(
                        'Report.client_id '=> $user_id,
                        'MONTH(date_created ) >='=> $month,
                        'YEAR(date_created ) <=' => $year

                ),
        )
        );