Уважаемые!
Столкнулся вот с такой проблемой:
Есть таблица, на основе нее модель. Необходимо выводить данные с помощью CGridView но с фильтром BETWEEN по полю date этой таблицы.
Представление:
<?php $this->widget('zii.widgets.grid.CGridView', array(
'id'=>'statistic-grid',
'dataProvider'=>$model->search($startDate, $dueDate),
'selectableRows'=>0,
'columns'=>array(
array(
'name'=>'date',
'header'=>'Date',
),
array(
'name'=>'line',
'header'=>'Line',
),
array(
'name'=>'callerid',
'header'=>'Caller ID',
),
/*array(
'name'=>'typename',
'header'=>'Type'
),*/
array(
'name'=>'result',
'header'=>'Result',
),
),
)); ?>
Переменные $startDate и $dueDate передаю в view контроллером.
Действие контроллера:
public function actionIndex(){
$weekDay = 1;
$startDate = '';
$dueDate = '';
if(isset($_POST['btnRun']))
{
$weekDay = $_POST['weekDay'];
$startDate = $_POST['startDate'];
$dueDate = $_POST['dueDate'];
}
$periodDates = $this->getPeriodDates($weekDay, $startDate, $dueDate);
$model=new SmsCdr('search');
$model->unsetAttributes(); // clear any default values
if(isset($_GET['SmsCdr']))
$model->attributes=$_GET['SmsCdr'];
$search = SmsCdr::model()->search($periodDates['startDate'],
$periodDates['dueDate']);
$this->render('index',array(
'model'=>$model,
'dataProvider'=>$search,
'startDate'=>$periodDates['startDate'],
'dueDate'=>$periodDates['dueDate'],
'weekDay'=>$weekDay,
));
Метод search в модели:
public function search($startDate, $dueDate, $userid = null)
{
// Warning: Please modify the following code to remove attributes that
// should not be searched.
$criteria=new CDbCriteria;
$criteria->compare('date',$this->date,true);
$criteria->compare('line',$this->line,true);
$criteria->compare('callerid',$this->callerid,true);
$criteria->compare('typeid',$this->typeid);
$criteria->compare('result',$this->result,true);
$criteria->condition = "date BETWEEN $startDate AND $dueDate";
return new CActiveDataProvider(get_class($this), array(
'criteria'=>$criteria,
'pagination'=>array(
'pageSize'=>3,
)
));
Проблема:
Фильтр по дате работает. Все корректно выводится. При нажатии на следующую страницу пагинатора, он выводится "No results found".
Отключаю фильтр BETWEEN работает без проблем.
Подскажите плиз. как фильтровать.