如何在Laravel分页


How to do paginate in Laravel?

所以我想在我的视图中使用分页,但我总是得到一个错误Call to a member function paginate() on a non-object,这是我的代码:

First my Action:

 public function index()
    {
        $logs = DB::table('services')
                ->join('logs', function($join)
            {
                $join->on('services.id', '=', 'logs.service_id');
            })
            ->get()->paginate(10); //here i got the error
        return View::make('logs.index',array('logs'=> $logs,'title'=>'Service Logs'));
    }

Then my view:

<table class="table table-striped table-bordered">
<thead>
    <tr>
        <td>Domain</td>
        <td>Port</td>
        <td>Checktime</td>
        <td>Status</td>
        <td>Responce</td>
    </tr>
</thead>
<div class="container">
@foreach($logs as $key => $value)
    <tr>
        <td>{{ $value->domain }}</td>
        <td>{{ $value->service_port }}</td>
        <td>{{ $value->checktime }}</td>
        <td class="text-center">
            @if( $value->status == 'up' ) <img src="../img/up3.png" />
            @elseif( $value->status == 'down' ) <img src="../img/down3.png" />
            @else <img width="30" height="30" src="../img/warning_icon.png" />
            @endif
        </td>
        <td>{{ $value->response_time }}</td>
    </tr>
@endforeach
   </div>
   </table>
   {{$logs->links();}}

所以,如果有人有任何想法,我将非常感激

在使用分页时不需要使用get。你的查询应该是:

$logs = DB::table('services')->join('logs', function($join)
        {
            $join->on('services.id', '=', 'logs.service_id');
        })->paginate(10);

事实上,你也可以删除闭包,因为这真的不是一个复杂的连接。

$logs = DB::table('services')
          ->join('logs', 'services.id', '=', 'logs.service_id')
          ->paginate(10);

从文档(http://laravel.com/docs/pagination)看来,正确的用法是:

$logs = DB::table('services')
    ->join('logs', function($join)
    {
        $join->on('services.id', '=', 'logs.service_id');
    })
    ->paginate(10); //removed get()