Фильтр Yii CActiveDataProvider по критериям диапазона дат - PullRequest
0 голосов
/ 21 декабря 2011

Я работаю с 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'),
                    ),
                ));

и

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

и

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

Все вернулись с "Результатов не найдено".Что я делаю неправильно?Кажется, это должно быть что-то простое, но я в тупике.

Ответы [ 3 ]

9 голосов
/ 23 января 2012

Проще создать новый 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));
0 голосов
/ 04 декабря 2014

Вы можете использовать для:

$criteria = new CDbCriteria;
$criteria->condition = "date_start >= '$date_start' AND date_end <= '$date_end'";
$model = TemporadaAlta::model()->find($criteria);
0 голосов
/ 16 декабря 2013

У вас есть проблема с цитатой; даты должны быть включены в одинарные кавычки. Попробуйте это:

$dataProvider=new CActiveDataProvider('Event', array(
                   'criteria'=>array(
                            'condition'=>"date BETWEEN '".date('Y-m-d', strtotime('-2 years'))."' AND '" . date('Y-m-d') . "'",
                        ),
                    ));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...