[Yii 1] Data provider solo su un certo numero di record

Ciao a tutti,

Ho un problema probabilemte semplice ma che non so ancora bene come affrontare

Ho un’applicazione che crea un data provider per popolare una GridView paginata.

La tabella è però diventata molto grossa e mi chiedono di mostrare paginate solo le prime 3000 righe

Per intenderci, ora ho circa 40000 righe, la mia gridview mostra 20 righe per pagina e risultano quindi circa 2000 pagine

Avrei bisogno di popolare una grid view con solo le ultime 3000 righe, mostrando quindi una gridview con "solo" 150 pagine

Quale è secondo voi l’approccio migliore?

Grazie in anticipo

Massimo

Crea un parametrized named scope che accetta un parametro, questo sarà il numero di righe da visualizzare

Per esempio: questo mostra come fare uno scope parametrico.





	public function maxRows($count)

	{

	    $this->getDbCriteria()->mergeWith(array(

	        'limit' => $count,

	    ));

	    return $this;

	}



si usa così in una grid view





 'dataProvider' => $model()->maxRows(30)->search();




Tu devi solo aggiungere il codice per fare l’offset a -$count (se il tuo motore db te lo permette).

La tecnica di yii è quella, per i dettagli se hai bisogno sono qui, per ora te li lascio