Laravel使用数据表简单选择分页

时间:2017-04-21 21:58:53

标签: php laravel datatable pagination

我正在使用数据表来显示数据库中的数据,但是假设我在数据库中有10万行并运行此查询

public function listCustomers()
    {
        $customers = DB::select(DB::raw('select * from customers'));

        Log::info('Retrieving customers from database.');

        return view('customers.list', array('customers' => $customers));
    }

永远加载有意义的东西。现在我尝试使用分页功能,但它只显示10行,就是这样。只有一页行可供显示。

public function listCustomers()
    {
        $customers = DB::table('customers')
                    ->selectRaw('*')
                    ->paginate(10);

        Log::info('Retrieving customers from database.');

        return view('customers.list', array('customers' => $customers));
    }

如何才能获得正确的分页?我看过this topic,但对我来说似乎太复杂了。

在这两种情况下,我都使用此代码在我的数据表中显示数据:

<?php $i = 1; ?>

@foreach ($customers as $customer)
   <tr role="row" class="odd">                            
   <?php $i++; ?>

   <td>{{$customer->id}}</td>
   <td>{{$customer->name}}</td>
   <td>{{$customer->surname}}</td>
   <td>{{$customer->city}}</td>
@endforeach

2 个答案:

答案 0 :(得分:0)

将此添加到您的html

{{ $customers->links() }}

这将帮助您浏览数据库中的其余数据。

答案 1 :(得分:0)

您可以使用此资料包https://packagist.org/packages/acfbentveld/laravel-datatables

$users = DataTables::collect(User::all())->get(); 在你的控制器中。它会自动检测数据表是否正在请求新数据。 在你的刀片或js文件中

 $(document).ready(function() {
    //thats all
    $('#datatable').DataTable({
        "processing": true, //process it
        "serverSide": true, //make it server side
        "ajax": location.href //Just get the data from the same url. The package will handle it all
    });

} );

当涉及使用分页的关系搜索和排序

时,这非常有用