Товарищи, прошу помощи.
Ситуация следующая: есть таблица в БД, данные хранятся криво, в одном поле несколько значений, разделенных "|", поэтому SQL выглядит след. образом:
SELECT callid, FROM_UNIXTIME( time ) AS disconnect_time,
IF( event = 'ABANDON', SUBSTRING_INDEX( data, '|' , -1 ),
SUBSTRING_INDEX( data, '|', 1 ) ) AS hold_time,
IF( event = 'ABANDON', 'No answer',
SUBSTRING_INDEX( SUBSTRING_INDEX( data, '|' , -2 ) , '|', 1 ) )
AS call_time
FROM queue_log
WHERE (event = 'ABANDON' OR event LIKE 'COMPL%')
, то есть стандартную модель (CActiveRecod) не могу использовать, так как поля у меня извлекаются из составных значений, раздленных "|".
Переделать структуру нет возможности - данные постяться из внешнего приложения.
Задача: использовать CGridView для вывода данных из этой таблицы с сортировкой и пагинацией.
На форуме нашел пример, но сортировка и пагинация не работают:
$sql = "SELECT callid, FROM_UNIXTIME( time ) AS disconnect_time,
IF( event = 'ABANDON', SUBSTRING_INDEX( data, '|' , -1 ),
SUBSTRING_INDEX( data, '|', 1 ) ) AS hold_time,
IF( event = 'ABANDON', 'No answer',
SUBSTRING_INDEX( SUBSTRING_INDEX( data, '|' , -2 ) , '|', 1 ) )
AS call_time
FROM queue_log
WHERE (event = 'ABANDON' OR event LIKE 'COMPL%')";
$dataProvider = new CSqlDataProvider($sql,
array('pagination'=>array('pageSize'=>'100')));
$this->widget('zii.widgets.grid.CGridView', array(
'id'=>'statistic-grid',
'dataProvider' => $dataProvider,
'selectableRows'=>0, //Выделение строк (0,1,2)
'cssFile'=>false,
'summaryText'=>'Вывод {start}-{end} из {count}',
'columns'=>array(
'callid',
'disconnect_time',
'hold_time',
'call_time',
/*array(
'class'=>'CButtonColumn',
'template' => '{update} {delete}',
'buttons'=>array('update' => array('label' => 'Редактировать')),
'deleteConfirmation'=>'Вы действительно хотите удалить эту позицию?',
),
)
));
Уваж. гуру, есть идеи?