如何使用 Laravel 的 Paginate() 输出当前迭代?

Ash*_*own 2 php mysql pagination laravel laravel-5

Laravel 5.2 应用程序。

我的控制器中有一个函数,它使用 order by 子句查询我的数据库,然后我对其进行分页。

public function foo() {

  $results = DB::orderBy('name', 'desc')->paginate(15);
  return view('index', ['results' => $results]);

}
Run Code Online (Sandbox Code Playgroud)

索引.blade.php

@foreach ($results as $result)
 <tr>
  <td>{{ //current $result position is what I need }}</td>
  <td>{{ $result->name }}<td>
  //etc...
 </tr>
@endforeach
Run Code Online (Sandbox Code Playgroud)

如何输出当前的行顺序迭代?

例如

Rank | name | //page 1
1      bob  
2      john
3      katie
Rank | name | //page 2
4      dave  
5      michael
6      ruben
Run Code Online (Sandbox Code Playgroud)

通常我只会输出,id但由于我有一个 orderBy 子句,因此 ID 不会正确反映当前排名。如果我执行类似for()循环的操作,那么当我转到下一页时,它会将第二页上的第一个结果重置为排名 1,即使它是下一页。

Laravel 有实现这一目标的具体方法吗?我浏览了文档,但找不到我要找的东西。

Ash*_*own 9

我能够比通过该firstItem()方法提供的建议更优雅地做到这一点。

public function foo() {

  $results = DB::orderBy('name', 'desc')->paginate(15);

  $rank = $results->firstItem();

  return view('index', ['rank' => $rank, 'players' => $players]);

}


index.blade.php

@foreach ($results as $result)
 <tr>
  <td>{{ $rank++ }}</td>
  <td>{{ $result->name }}<td>
  //etc...
 </tr>
@endforeach
Run Code Online (Sandbox Code Playgroud)