【发布时间】:2019-08-03 05:41:04
【问题描述】:
我需要澄清一下 Laravel 的分页器在后台是如何工作的:
假设我有一个 1000 行的表,我使用
$results = Model::paginate(100);
如果我理解正确,Eloquent 会从表中带回一个包含所有行(1000)的集合,将其分割成更小的 100 行集合,并将分页按钮数据附加到它们。现在$results 包含Page 1 集合和按钮的分页数据。
我的问题是:当我按下Page 2 按钮时,后台会发生什么?
Eloquent 是否会再次查询数据库,再次检索整个 1000 行集合,对其进行切片并返回第 2 页集合,或者它是否适用于我之前的请求已经检索回的集合?
或者,Eloquent 的 ::paginate(100) 是否使用限制查询数据库?喜欢
select * from table limit 100?
【问题讨论】:
-
使用限制和偏移量,您只查询您需要的数据。所以你有
LIMIT 100和OFFSET 100*($pagenumber-1)之类的东西。
标签: php laravel pagination