how to use paginator::make() in laravel to show resultset in view?

耗尽温柔 提交于 2019-12-14 03:45:59

问题


I have used Paginator::make to paginate the records in the table. In the view, I am getting the pagination links, but every link has all the records in it. How to restrict it to perPage items?

    $datas = Paginator::make($paginator, count($paginator), $perPage);
    return $datas;

The code outputs:

{"total":10,"per_page":5,"current_page":1,"last_page":2,"from":1,"to":5,"data":      
[{"id":"10","languages":"ds","created_at":"2014-05-23 
11:59:02.000","created_by":"1","updated_at":"2014-05-23 
11:59:02.000","updated_by":"1","is_active":"1"},
{"id":"9","languages":"urdu","created_at":"2014-05-23 
11:57:24.000","created_by":"1","updated_at":"2014-05-23 
11:57:24.000","updated_by":"1","is_active":"1"},
{"id":"8","languages":"were","created_at":"2014-05-23 
11:55:49.000","created_by":"1","updated_at":"2014-05-23 
11:55:49.000","updated_by":"1","is_active":"1"},  
{"id":"7","languages":"delete","created_at":"2014-05-23  
11:54:57.000","created_by":"1","updated_at":"2014-05-24  
06:02:46.000","updated_by":"1","is_active":"1"},
{"id":"6","languages":"sdf","created_at":"2014-05-23 
11:53:11.000","created_by":"1","updated_at":"2014-05-23 
11:53:11.000","updated_by":"1","is_active":"1"},
{"id":"5","languages":"dada","created_at":"2014-05-23 
11:51:33.000","created_by":"1","updated_at":"2014-05-24 
05:44:34.000","updated_by":"1","is_active":"1"},
{"id":"4","languages":"English","created_at":"2014-05-23 
11:49:49.000","created_by":"1","updated_at":"2014-05-23 
11:49:49.000","updated_by":"1","is_active":"1"},
{"id":"3","languages":"asdfgf","created_at":"2014-05-23 
11:48:20.000","created_by":"1","updated_at":"2014-05-23 
11:48:20.000","updated_by":"1","is_active":"1"},
{"id":"2","languages":"Tamil","created_at":"2014-05-23 
10:55:50.000","created_by":"1","updated_at":"2014-05-23 
10:55:50.000","updated_by":"1","is_active":"1"},
{"id":"1","languages":"Tamil","created_at":"2014-05-23 
10:51:42.000","created_by":"1","updated_at":"2014-05-26 
04:41:27.000","updated_by":"1","is_active":"1"}]}

回答1:


Actually Paginator::make function we need to pass only the required values instead of all values. Because paginator::make function simply displays the data send to it. To send the correct offset paginated data to the paginator::make, the following method should be followed

    $paginator = json_decode($response);
    $perPage = 5;   
    $page = Input::get('page', 1);
    if ($page > count($paginator) or $page < 1) { $page = 1; }
    $offset = ($page * $perPage) - $perPage;
    $articles = array_slice($paginator,$offset,$perPage);
    $datas = Paginator::make($articles, count($paginator), $perPage);

Hope this will help someone...




回答2:


Paginator::make()

This function only creates the paging system. To restrict your data for each page you have to do some changes to your query. Here is an example.

        $pageNo = Input::get('page', 1);
        $perPage = 10;
        $from = $pageNo*$perPage-$perPage;
        $to = $perPage;

        $data['allData'] = DB::select( DB::raw('SELECT * FROM tablename LIMIT '.$from.','.$to));
        $totalData = DB::select( DB::raw('SELECT * FROM tablename'));
        $data['paginator'] = Paginator::make($data['allData'], count($totalData), $perPage);

Then you can show the data to your view page




回答3:


You should load a view and pass the $datas to that view using something like this:

return View::make('viewname')->with('datas', $datas);

Then in your view loop all the models in $datas and print out the links, for example:

foreach($datas as $data) {
    echo $data['propertyname']; // $data['username'];
}

Finally print the links:

echo $data->links();

If you are using Blade then use {{ $data['propertyname'] }} and {{ $data->links() }} instead of echo and also change foreach, check here for more. Also make sure you have used the right viewname in make(...) because the viewname passed in the make(...) method wull be loaded from app/views folder by default.



来源:https://stackoverflow.com/questions/23870493/how-to-use-paginatormake-in-laravel-to-show-resultset-in-view

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!