如何在Laravel做分页?

时间:2014-03-29 09:36:34

标签: php twitter-bootstrap laravel pagination laravel-4

所以我想要的是在我的视图中使用paginate但我总是出现错误Call to a member function paginate() on a non-object,这是我的代码:

首先是我的行动:

 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'));
    }

然后我的观点:

<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();}}

所以,如果有人知道我会如此感激

2 个答案:

答案 0 :(得分:3)

使用分页时,无需使用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);

答案 1 :(得分:2)

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

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