首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Laravel自定义分页

Laravel自定义分页
EN

Stack Overflow用户
提问于 2016-05-24 08:00:59
回答 2查看 1.5K关注 0票数 3

在Laravel 5.2中进行分页时遇到了问题,我使用foreach生成一个对象列表,其中每个对象都有一定的排名。(比赛)

我使用的第一个查询是这样的:

代码语言:javascript
复制
$goedeDoelen = GoedDoel::orderBy('punten', 'desc')->simplePaginate(5);

这很好用,唯一的问题是我的排名会重置我转到不同页面的所有内容。

示例:页面1具有排名1- 5的对象,页面2应具有排名6-10的对象。通过使用第一个分页方法,第二个页面将再次拥有从1开始的对象。

我试图通过将排名作为额外属性添加到我的能言善辩的集合中来解决这个问题。

代码语言:javascript
复制
    $ranking = GoedDoel::orderBy('punten', 'desc')->get();
    foreach($ranking as $key => $item) {
        $item->ranking = $key+1;
    }

在那之后,我尝试在更新后的集合上使用->simplePaginate()。这给出了一个错误。

我已经创建了一个自定义分页器。

代码语言:javascript
复制
$goedeDoelen = new Paginator($ranking, 5);

这并不像预期的那样工作。当我转到第二个页面时,URL乱七八糟地转到了另一个视图。

如何确保分页器知道必须将?page=2应用到的当前URL

EN

回答 2

Stack Overflow用户

发布于 2016-05-24 14:49:07

您需要使用paginate()方法。

代码语言:javascript
复制
$goedeDoelen = GoedDoel::orderBy('punten', 'desc')->paginate(5);

{!! $goedeDoelen->links() !!}
票数 0
EN

Stack Overflow用户

发布于 2018-11-10 15:38:16

以下代码说明了Laravel中的手动分页

示例控制器

代码语言:javascript
复制
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]);

    }
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37402408

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档