让我的分页在Laravel 5.2中工作时遇到问题我使用foreach生成一个对象列表,其中每个对象都有一定的排名。 (竞争)
我使用的第一个查询就是这个:
$goedeDoelen = GoedDoel::orderBy('punten', 'desc')->simplePaginate(5);
这工作得很好,唯一的问题是我的排名会重置我要去另一页的所有内容。
示例:第1页的对象排名为1 - 5,第2页的排名应为6-10。通过使用第一个Paginate方法,第二个页面将具有从1开始的对象。
我试图通过将排名作为额外属性添加到我的Eloquent集合中来解决这个问题。
$ranking = GoedDoel::orderBy('punten', 'desc')->get();
foreach($ranking as $key => $item) {
$item->ranking = $key+1;
}
之后我尝试在我更新的集合上使用 - > simplePaginate()。这给了一个错误。
我创建了一个自定义Paginator。
$goedeDoelen = new Paginator($ranking, 5);
这不是按预期工作的。当我转到第二页时,URL会混乱并进入另一个视图。
如何确保Paginator知道我当前的URL应用于哪个?page = 2
答案 0 :(得分:0)
您需要使用paginate()方法。
$goedeDoelen = GoedDoel::orderBy('punten', 'desc')->paginate(5);
{!! $goedeDoelen->links() !!}
答案 1 :(得分:0)
以下代码说明了Laravel中的手动分页
样品控制器
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use Illuminate\Pagination\LengthAwarePaginator as Paginator;
use App\Models\UserRechargeDetails;
class PaginateController extends Controller
{
//
public function index(Request $request)
{
$user_1 = new UserRechargeDetails;
// Get records from Database
$items = $user_1->all();
// Store records in an array
$records = [];
$i = 0;
foreach($items as $item)
{
$records[$i][0] = $item->user_name;
$records[$i][1] = $item->rech_mobile;
$i++;
}
// Current page for pagination
$page = $request->page;
// Manually slice array of product to display on page
$perPage = 2;
$offset = ($page-1) * $perPage;
$data = array_slice($records, $offset, $perPage);
// Your pagination
$final_data = new Paginator($data, count($records), $perPage, $page, ['path' => $request->url(),'query' => $request->query(),]);
/*
For Display links, you may add it in view page
{{ $data->links('pagination::bootstrap-4') }}
*/
return view('admin.pagination_new', ['data' => $final_data, 'j' => 1]);
}
}