Requête de pagination
ThinkPHP a une implémentation de pagination intégrée. Il est très simple d'ajouter une fonction de sortie de pagination aux données. Vous pouvez appeler directement la méthode paginate lors de l'interrogation de la classe Db :
// 查询状态为1的用户数据 并且每页显示10条数据 $list = Db::name('user')->where('status',1)->order('id', 'desc')->paginate(10); // 渲染模板输出 return view('index', ['list' => $list]);
Le code de sortie de pagination dans le fichier modèle est le suivant. :
<div> <ul> {volist name='list' id='user'} <li> {$user.nickname}</li> {/volist} </ul> </div> {$list|raw}
Sortie de pagination dans le fichier modèle Le code est le suivant :
<div> <ul> {volist name='list' id='user'} <li> {$user.nickname}</li> {/volist} </ul> </div> {$list|raw}
Vous pouvez également attribuer la variable de modèle de sortie de pagination séparément
// 查询状态为1的用户数据 并且每页显示10条数据 $list = Db::name('user')->where('status',1)->order('id', 'desc')->paginate(10); // 获取分页显示 $page = $list->render(); return view('index', ['list' => $list, 'page' => $page]);
Le code de sortie de pagination dans le fichier modèle est le suivant :
<div> <ul> {volist name='list' id='user'} <li> {$user.nickname}</li> {/volist} </ul> </div> {$page|raw}
Par par défaut, la sortie de pagination générée est une fonction de pagination complète, avec des données de pagination totales et des numéros de page supérieurs et inférieurs. Le style de pagination doit uniquement être modifié via le style. Le code de sortie de pagination par défaut généré par la pagination complète est :
<ul class="pagination"> <li><a href="?page=1">«</a></li> <li><a href="?page=1">1</a></li> <li class="active"><span>2</span></li> <li class="disabled"><span>»</span></li> </ul>
If. vous devez obtenir les données totales séparément, vous pouvez utiliser
// 查询状态为1的用户数据 并且每页显示10条数据 $list = Db::name('user')->where('status',1)->order('id' ,'desc')->paginate(10); // 获取总记录数 $count = $list->total(); return view('index', ['list' => $list, 'count' => $count]);
pour transmettre le nombre total d'enregistrements
Prend en charge la transmission du nombre total d'enregistrements Le nombre d'enregistrements sans calculer automatiquement le total, par exemple :
// 查询状态为1的用户数据 并且每页显示10条数据 总记录数为1000 $list = Db::name('user')->where('status',1)->paginate(10,1000); // 获取分页显示 $page = $list->render(); return view('index', ['list' => $list, 'page' => $page]);
Pour les requêtes UNION et certaines requêtes complexes spéciales, il est recommandé d'utiliser cette méthode pour interroger d'abord le nombre total d'enregistrements séparément, puis de le transmettre à la méthode de pagination
Traitement des données après la pagination
Prise en charge directe de chaque traitement de traversée de données après la classe de pagination, ce qui facilite la modification des données paginées, au lieu de simplement ajouter des champs via le getter du modèle.
$list = Db::name('user')->where('status',1)->order('id', 'desc')->paginate()->each(function($item, $key){ $item['nickname'] = 'think'; return $item; });
Si la classe de modèle exploite des données de pagination, il n'est pas nécessaire d'utiliser la valeur de retour dans la fonction de fermeture de chaque méthode, par exemple :
$list = User::where('status',1)->order('id', 'desc')->paginate()->each(function($item, $key){ $item->nickname = 'think'; });
Paging simple
Si vous avez seulement besoin de générer une sortie de pagination avec uniquement les pages supérieures et inférieures, vous pouvez utiliser le code de pagination concis suivant :
// 查询状态为1的用户数据 并且每页显示10条数据 $list = Db::name('user')->where('status',1)->order('id', 'desc')->paginate(10, true); // 渲染模板输出 return view('index', ['list' => $list]);
Le code de sortie du mode de pagination concis est :
<ul class="pager"> <li><a href="?page=1">«</a></li> <li class="disabled"><span>»</span></li> </ul>
Étant donné que le mode de pagination concis ne nécessite pas d'interroger le nombre total de données, il peut améliorer la requête performance.
Paramètres de pagination
Les principaux paramètres de pagination sont les suivants :
Paramètre | Description |
list_rows | Nombre par page |
page | Page actuelle |
chemin | chemin d'url