yii CActiveDataProvider mit limit-und Seitenzählung
Ich versuche, wählen Sie einige Zeilen aus der Tabelle und machen es in mehrere Seiten (pagination).
Dies ist ein code in das Modell:
return new CActiveDataProvider('Downloads',
array(
'criteria' => array(
'select' => 'download_id,title,thumb_ext',
'order' => 'download_id DESC',
'limit' => $count,
),
'pagination' => array('pageSize' => 5,),
)
);
In der Ansicht anzeigen ich es mit CGridView:
$this->widget('zii.widgets.grid.CGridView', array(
'dataProvider'=>$dataProvider,
'columns' => array('download_id', 'title', 'thumb_ext'),
));
Das problem ist, dass CActiveDataProvider ignoriert limit von Kriterien und gibt alle Zeilen der Tabelle...
Dank.
- hat $dataProvider enthalten die CActiveDataProvider Objekt?
- Ja, ich wusste nicht, poste hier den code, der Controller...
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ich bin nicht positiv... aber ich denke, Yii nutzt die LIMIT-Klausel von SQL-Ergebnis Seitenumbruch, so wird es überschreiben/ersetzen Sie Ihre LIMIT-Klausel. Sie können dies überprüfen, indem Sie auf den CWebLogRoute log-route, um zu sehen, was genau der SQL ausgeführt wird.
Ich bin mir nicht ganz sicher, wie das funktionieren soll, sowieso. Was ist das LIMIT-Klausel, die Sie Hinzugefügt? Wenn Sie umbrechen sowieso, warum nicht lassen Sie den Benutzer paginieren, die durch alle Datensätze? Die Lösung ist wahrscheinlich so ändern Sie Ihre Kriterien, um loszuwerden, die LIMIT-Klausel.
Sind Sie versuchen, die Anzahl der Ergebnisse pro Seite? Sie haben bereits die pageSize auf 5 festgelegt obwohl...
Eine andere Sache, zu versuchen, die könnten tun, was Sie wollen, ist zu überprüfen, die Basis Pager-Klasse, CPagination. Mit CLinkPager, es könnte lassen Sie den Umbruch, kreativer als die CListPager, die Sie mit der CGridView.
Glück!
Ich hatte das gleiche problem und habe eine Lösung gefunden, wie folgt:
und setzen CGridView, um die Paginierung versteckt:
Eines der wichtigsten features von einem Daten-provider ist, dass Sie außer Kraft setzen können, die Berechnung der Menge der Zeilen durch angeben einer "totalItemCount" in der config. Normalerweise (ich habe es noch nicht getestet) funktioniert das auch für die ActiveDataProvider: