YII2.0框架分頁

jefferyjob發表於2016-03-29

這篇文章主要介紹了Yii分頁用法,以例項形式詳細分析了比較常見的幾種分頁方法及其應用特點,非常具有實用價值,需要的朋友可以參考下:

在這裡我主要聯查的 book 表和 book_press 兩張表進行分頁的


Controller

/**
*@action	yii多表連結查詢後分頁
*@-----------------------------------------------------------
*@ book 表和 bookpress 聯查後分頁
*/
public function actionIndex()
{
	$model = new Book; //例項化model
	$data = $model -> pages(); //呼叫pages 進行聯查資料
	$pages = new Pagination([
		`totalCount` =>$data->count(),
		`pageSize` =>5, //pageSize 每頁顯示的條數
	]); 
	$models = $data->offset($pages->offset)->limit($pages->limit)->asArray()->all();
   
	return $this->render(`index`,[
		 `models` => $models,
		 `pages` => $pages,
	]);
}

Model

/**
* @inheritdoc 多表聯查資料
*/
function pages()
{
	//注意: 查詢的時候不能加 all 或者 asArray 查出來是物件就可以了
	 return $this->find()
		->select(`*`)
		->innerJoin("`book_press` as bp on `bp`.`book_id` = `book`.`title_id`");
		/* 此處去掉
		->asArray() 
		->all();
		*/
}

VIEWS

<?php
use yiihelpersHtml;
use yiiwidgetsLinkPager;
?>
<table border=1>
	<?php foreach ($models as $model): ?>
		<tr>
			<td><?= $model[`title`]; ?></td>
			<td><?= $model[`author`]; ?></td>
		</tr>	
	<?php endforeach; ?>
</table>

<?= LinkPager::widget([`pagination` => $pages,
	`firstPageLabel` => `首頁`,
    `lastPageLabel` => `最後一頁`,
    `prevPageLabel` => `上一頁`,
    `nextPageLabel` => `下一頁`,
	`maxButtonCount`=>5,	//控制每頁顯示的頁數
]); ?>


相關文章