我的大脑突然撞到了这个。任何关心帮助我的人都非常感激。
这是laravel 5.4中的LengthAwarepaginator
这是代码。
$collection = [];
foreach ($maincategories->merchantCategory as $merchantCat) {
foreach ($merchantCat->merchantSubcategory as $merchantSub) {
foreach($merchantSub->products as $products){
$collection[] = $products;
}
}
}
$paginate = new LengthAwarePaginator($collection, count($collection), 10, 1, ['path'=>url('api/products')]);
dd($paginate);
它显示完美,但问题是项目是100.这是我的所有项目,我正确指定。我只需要显示10个。
基于LengthAwarePaginator构造函数。这是参考。
public function __construct($items, $total, $perPage, $currentPage = null, array $options = [])
这是屏幕截图。
我哪里出错了? TY
答案 0 :(得分:14)
手动创建分页器时,您必须自己对结果集进行切片。分页器的第一个参数应该是所需的结果页面,而不是整个结果集。
手动创建分页器实例时,您应该手动"切片"传递给paginator的结果数组。如果您不确定如何执行此操作,请查看array_slice PHP函数。
我建议使用Collection来帮助解决这个问题:
MetroMessageBox.Show(Me, "Invalid Login", "Invalid", MessageBoxButtons.OK, MessageBoxIcon.Error)
答案 1 :(得分:0)
对于繁重的选择和避免任何多重选择从表中计算总数我们无法使用模型分页
use Illuminate\Pagination\LengthAwarePaginator;
在你的控制器函数中
if(!isset($input["total"])){ //initial request
$total = //Find the total only one time.
$request->request->add(['total' => $total]); //Add it in the request so that we can print it in blade
}else
$total = $input["total"]; //After initial request
$currentPage = LengthAwarePaginator::resolveCurrentPage(); //page variable from GET or POST
$perPage = 30; //Page Length
$offset = ($currentPage - 1) * $perPage; //find the offset to pass in query
$specificRecords = /*Collect specific page records in array
if mysql then Select * from table limit $perPage offset $offset
if ms sql then OFFSET {$offset} ROWS FETCH NEXT {$perPage} ROWS ONLY */
$records = new LengthAwarePaginator($specificRecords,$total,$perPage,Null,[ "path" => "/pagepath" ]);
在刀片中:
<center>{{$records->appends(Request::except([ 'page','_token' ]))->links()}}</center>
检查页面标签中的页面和总变量确保您在列表之外添加了页面:)