2016-07-31 33 views
-1

ich MySQL-Tabelle "Flats" haben mit solchen ZeilenYii2 und php-Generatoren (Ausbeute) mit mysql

----------------------- 
id | created | rooms 
----------------------- 
1 | 2016-07-21 | 2 
2 | 2016-07-20 | 1 
3 | 2016-07-20 | 1 
4 | 2016-07-19 | 2 
5 | 2016-07-18 | 2 
6 | 2016-07-18 | 1 
7 | 2016-07-17 | 2 
8 | 2016-07-17 | 1 
----------------------- 

I 3 Wohnungen mit 2 Zimmern und 4 Wohnungen mit 1 Zimmer nach Datum (absteigend sortiert auswählen müssen). Diese ausgewählten Informationen (3 und 4 Wohnungen) sind auf der Seite der 1. Seite. Dann muss ich nächste Info wählen (nächste 3 und 4 Wohnungen).

1) - Wie kann ich es in yii2 mit nicht Paginierung und nicht mysql Offset, sondern mit PHP-Generatoren (Ausbeute). 2) - Was ist der bessere Weg-Mysql-Offset oder PHP-Ausbeute für den Zweck.

+0

was meinst du? – rt188

+0

Ich weiß nicht einmal, wie man diesen Code in Yii2- wie Active Abfrage und Generatoren kombinieren – rt188

Antwort

0

Ich sehe keine Vorteile in diesem Ansatz. Warum erfinden Sie das Rad neu, besonders wenn Sie sich dafür entscheiden, das Framework zu verwenden, und es stellt bereits die Paginierungskomponente bereit?

Sie können lesen über gemeinsame Paginierung in Pagination Artikel. Beispiel:

use yii\data\Pagination; 

// build a DB query to get all articles with status = 1 
$query = Article::find()->where(['status' => 1]); 

// get the total number of articles (but do not fetch the article data yet) 
$count = $query->count(); 

// create a pagination object with the total count 
$pagination = new Pagination(['totalCount' => $count]); 

// limit the query using the pagination and retrieve the articles 
$articles = $query->offset($pagination->offset) 
    ->limit($pagination->limit) 
    ->all(); 

Links zu Seiten mit yii\widgets\LinkPager Widget angezeigt:

use yii\widgets\LinkPager; 

echo LinkPager::widget([ 
    'pagination' => $pagination, 
]); 

Und es gibt einige Details für yii\data\Pagination Komponente.

Lernen Sie Framework-Funktionen und verwenden Sie es. Wenn Sie beispielsweise ActiveDataProvider mit dem Widget GridView verwenden, ist die Seitennumerierung bereits integriert, so dass Sie sie nur für Ihre Anforderungen (Elemente pro Seite usw.) konfigurieren und sich nicht um Details der internen Implementierung kümmern (Offsets usw.). Aber es ist offensichtlich besser, wenn Sie verstehen, wie es funktioniert.