Witajcie,
aktualnie jestem w trakcie realizacji dosyć dużego projektu w którym wykorzystuję Cache na porządku dziennym z uwagi na dużą ilość zapytań i danych. Powstaje pytanie w jaki sposób utowrzyć paginacje w Yii przy użyciu CdbCache
Może podam przykład jak akutalnie wygląda przykładowa akcja controllera:
public function actionIndex()
{
$streams_cached = Yii::app()->cache->get('streams');
if($streams_cached === false) {
$streams = PsStreamsMainModel::model()->findAll();
if($streams !== null) {
foreach($streams as $stream) {
$list_stream[] = $stream['channel_name'];
}
$curl = Yii::app()->curl->get('//api.*****/kraken/streams?channel='.strtolower(implode(',', $list_stream)), array());
$array_with_streams = json_decode($curl, true);
}
//cache it
Yii::app()->cache->set('streams', $array_with_streams, 300);
}
$streams_cached = Yii::app()->cache->get('streams');
$this->render('index', array('streams' => $streams_cached));
}
Może krótki opis zmiennych:
$streams_cached
zwraca tablicę array z danymi (w środku po kilka rekordów oznaczonych kolejno array[1], array[2]).
W jaki sposób utworzyć teraz paginacje idąc zgodnie z ideą CPagination:
$criteria=new CDbCriteria();
$count=Article::model()->count($criteria);
$pages=new CPagination($count);
// results per page
$pages->pageSize=10;
$pages->applyLimit($criteria);
$models=Article::model()->findAll($criteria);
$this->render('index', array(
'models' => $models,
'pages' => $pages
));
Proszę o pomoc, ponieważ już nieźle się nagłowiłem jak to połączyć z cache-em
Pozdrawiam