【问题标题】:Laravel 5.7 pagination showing but not returning the correct data when changing pageLaravel 5.7 分页显示但在更改页面时未返回正确的数据
【发布时间】:2019-02-10 19:12:34
【问题描述】:

这是我的路线:

Route::namespace('Admin')->prefix('admin')->name('admin.')->middleware(['auth', 'auth.admin'])->group(function () {

Route::prefix('users')->group(function() {
    Route::get('/', 'UserController@index')->name('user');

在我的控制器中,我有以下内容:

$users = User::with('roles', 'group')->paginate(1);

return view('admin.user.index')->with(['users' => $users]);

没有分页,这可以正常工作并返回我拥有的 4 个结果。随着分页 UI 部分的工作,它在分页控件中显示 4 个链接(每页 1 个结果),但是当单击第 2、3 和 4 页的链接时,它每次都返回相同的第一项。

我可以看到它正在传递网络选项卡中的 URL 参数,例如:

http://localhost:8050/admin/users?page=2

但是,它对返回的结果没有影响,所以我认为问题出在我的 Eloquent 查询上?


经过更多研究,问题不在于分页,而在于 GET 参数。

即使我像这样直接在 URL 中传递页面键:http://localhost:8050/admin/users?page=2 我的 GET 参数是空的,所以这就是分页不起作用但阻止 GET 参数通过的原因?

即使执行 dd($_GET) 也会显示 GET 参数为空。

【问题讨论】:

    标签: php laravel laravel-5 laravel-5.7


    【解决方案1】:

    使用这个:

    $paginate = $request->input('page');
    $itemsPerPage = 10;
    
    if(!$paginate){
       $paginate = 1;
    }   
    
    $users = User::with('roles', 'group')->skip($paginate*$itemsPerPage)->take($itemsPerPage);
    
    return view('admin.user.index')->with(['users' => $users]);
    

    【讨论】:

    • 不幸的是这仍然不起作用,它仍然返回第一个结果。
    • 我已经更新了我的问题,GET 参数没有被传递,它们 GET 超级全局是空的。
    • 使用 skip 和 take 作为偏移和限制。
    【解决方案2】:

    试试这个代码

    在控制器用户中(更改为您的表名)

    $users = DB::table('users')->paginate(1);
    
    return view('user.index', ['users' => $users]);
    

    在视图中

    {{ $users->links() }}
    

    【讨论】:

    • 这就是我所拥有的,只是你删除了 Eloquent 并直接使用查询生成器。
    【解决方案3】:

    在视图文件中你可以改变这个:

    {!! $users->links() !!}
    

    【讨论】:

      猜你喜欢
      • 2019-09-08
      • 1970-01-01
      • 2017-09-04
      • 2019-01-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多