Laravel 5.6 搜索分页错误 "Sorry the page cannot be found on page 2"

Laravel 5.6 Search Pagination giving error "Sorry the page cannot be found on page 2"

我是 Laravel 搜索功能和分页的新手。我正在使用 Laravel 5.6 并具有搜索功能。

控制器代码

public function search()
    {
    $users = User::whereRole_id(1)->where(function($query) {
                $q = Input::get ( 'q' );
                return $query->where ( 'name', 'LIKE', '%' . $q . '%' )->orWhere ( 'email', 'LIKE', '%' . $q . '%' )->orWhere ( 'phone', 'LIKE', '%' . $q . '%');
        })->paginate(8)->setPath('');
        $pagination = $users->appends ( array ('q' => Input::get ( 'q' ) ) );
                if (count($users) > 0){
                    return view( 'admin.users.index',compact('users'));
                }else{
                    $q = Input::get ( 'q' );
                    Session::flash('Nosearch',"No Details found with $q .Try to search again !");
                    return view( 'admin.users.index',compact('users'));
            }
    }

我的查看代码:

我正在使用 {{$users->links()}} 来显示链接,当我查看源代码时,它给出了正确的参数以及页码,如下所示:

<li class="page-item active" aria-current="page"><span class="page-link">1</span</li><li class="page-item"><a class="page-link" href="?q=abc&amp;page=2">2</a></li>

路线代码:

Route::group([
    'as'=>'admin.',
    'prefix' => 'admin',
    'middleware' => 'admin'
], function() {
    Route::post('/users/search', 'AdminUsersController@search');
}

当我点击下一页时,出现如下错误 Page Not Found Error

请帮我看看我哪里错了?谢谢,帕拉克

将你的资源路由移到最后。您收到 404 是因为您的 uri users/searchshow 资源路由匹配,即 users/{user} 其中 laravel 试图找到用户 ID "search" 的用户,即未找到,因此它给出 ModelNotFoundException404.

你应该重新排序你的路线,同时让你的搜索路线成为 GET 路线,否则下一页链接将始终使用 GET 请求方法命中 uri users/{user},这将再次导致上述情况。

Route::group([
    'as'=>'admin.',
    'prefix' => 'admin',
    'middleware' => 'admin'
], function() {
//Note that it is now a get method
    Route::get('/users/search', 'AdminUsersController@search');
    Route::get('/users/export/{type}', 'AdminUsersController@export');
//Moved your resource route to the end of `users` uri. 
Route::resource('users', 'AdminUsersController');
 Route::get('transactions/index', 'AdminTransactionsController@index')->name('transactions.index');
 Route::post('/transactions/search', 'AdminTransactionsController@search');
 Route::get('/transactions/export/{type}', 'AdminTransactionsController@export');

});
Route::group([
    'as'=>'admin.',
    'prefix' => 'admin',
    'middleware' => 'admin'
], function() {
    Route::post('/users/search', 'AdminUsersController@search');
    Route::get('/users/export/{type}', 'AdminUsersController@export');
    Route::resource('users', 'AdminUsersController');
    Route::get('transactions/index', 'AdminTransactionsController@index')->name('transactions.index');
    Route::post('/transactions/search', 'AdminTransactionsController@search');
    Route::get('/transactions/export/{type}', 'AdminTransactionsController@export');
});

I have pasted the image for reference 我要去这个 url : http://ssapp/admin/users/search?q=user1&page=2

此致, 帕拉克