2016-07-31 2 views
-1

У меня есть MySQL таблицы «Квартиры» с такими строкамиYii2 и РНР-генераторы (выход) с 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 
----------------------- 

нужно выбрать 3 квартиры с 2-х комнат и 4 квартиры с 1 номер отсортировано по дате (по убыванию). Эта выбранная информация (3 и 4 квартиры) будет на странице 1-го сайта. Затем мне нужно выбрать следующую информацию (следующие 3 и 4 квартиры).

1) - Как я могу это сделать в yii2, используя не разбиение на страницы, а не смещение mysql, но используя php-генераторы (yield). 2) - Каков лучший способ - смещение mysql или php-yield для этой цели.

+0

Что вы имеете в виду? – rt188

+0

Я даже не знаю, как запустить этот код в Yii2- как объединить активные запросы и генераторы – rt188

ответ

0

Я не вижу преимуществ в этом подходе. Почему изобретать колесо особенно, когда вы решите использовать фреймворк, и он уже предоставляет компонент разбиения на страницы?

Вы можете прочитать о pagination общем в Pagination статье. Пример:

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(); 

Ссылки на страницы отображаются yii\widgets\LinkPager виджета:

use yii\widgets\LinkPager; 

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

И есть некоторые детали для yii\data\Pagination компонента.

Изучите возможности фреймворка и используйте его. Например, при использовании ActiveDataProvider с виджетами GridView, разбиение на страницы уже построено, поэтому вы настраиваете его только в соответствии с вашими потребностями (пункты на странице и т. Д.) И не заботятся о деталях внутренней реализации (смещения и т. Д.). Но, очевидно, лучше, если вы поймете, как это работает.

Смежные вопросы