Yii CActiveDataProvider按日期范围标准过滤

T10*_*000 0 database criteria yii

我正在使用Yii 1.1.8.尝试在控制器操作中按日期限制$ dataProvider源.我想过滤数据集以仅显示最近2年的条目,但无法使其工作.

我在事件表中有两条记录,其中一条记录是2个月前,另一条记录是4年前.

尝试:

$dataProvider=new CActiveDataProvider('Event', array(
                    'criteria'=>array(
                        'condition'=>'date >= '.date('Y-m-d', strtotime('-2 years')). ' AND  date <='. date('Y-m-d'),
                    ),
                ));
Run Code Online (Sandbox Code Playgroud)

$dataProvider=new CActiveDataProvider('Event', array(
                    'criteria'=>array(
                        'condition'=>'date >= '.date('Y-m-d', strtotime('-2 years')),
                    ),
                ));
Run Code Online (Sandbox Code Playgroud)

$dataProvider=new CActiveDataProvider('Event', array(
                    'criteria'=>array(
                        'condition'=>'date BETWEEN '.date('Y-m-d', strtotime('-2 years')).' AND '. date('Y-m-d'),
                    ),
                ));
Run Code Online (Sandbox Code Playgroud)

全部返回"未找到结果".我究竟做错了什么?它似乎应该是简单的东西,但我很难过.

aCo*_*ith 9

创建新的CDbCriteria然后将条件对象传递到CActiveDataProvider的第二个参数中会更容易.

http://www.yiiframework.com/doc/api/1.1/CDbCriteria#addBetweenCondition-detail

$criteria = new CDbCriteria; 
$criteria->addBetweenCondition($column, $valueStart, $valueEnd, 'AND');

$dataProvider=new CActiveDataProvider('Event', array('criteria'=>$criteria));
Run Code Online (Sandbox Code Playgroud)