如何在表格中添加每行的行号?我使用了分页,但是发现很难显示行数。在第2页中,应该以6开始,因为我的分页为每页5。
编辑
还有如何在表格上方正确显示单词showing 1 to 5 of 2095
?
CONTROLLER
class SchoolController extends Controller
{
function index()
{
$q = Input::get('q');
if ($q != "") {
$schools = LibSchool::where('school_name', 'LIKE', '%' . $q . '%')
->orWhere('school_id', 'LIKE', '%' . $q . '%')
->orWhere('address', 'LIKE', '%' . $q . '%')
->orWhere('school_head', 'LIKE', '%' . $q . '%')
->orWhere('level', 'LIKE', '%' . $q . '%')
->orderBy('school_name', 'asc')
->with('libdistrict')
->with('libdistrict.libdivision')
->paginate(5)->appends('q', $q);
} else {
$schools = LibSchool::with('libdistrict')
->orderBy('school_name', 'asc')
->with('libdistrict.libdivision')
->paginate(5);
}
return view('schools.index')->with('data', ['schools' => $schools, 'q' => $q]);
}
}
查看
<div class="card-body">
Showing 1 to 15 of {{$data['schools']->total()}}
<table class="table table-hover table-bordered table-striped">
<tr>
<th>#</th>
<th>Division</th>
<th>District</th>
<th>School ID</th>
<th>School NAME</th>
<th>Address</th>
<th>School Head</th>
<th>Level</th>
</tr>
@if($data['schools']->total() > 0)
@foreach($data['schools'] as $school)
<tr>
<td></td>
<td>{{ $school->libdistrict ? $school->libdistrict->libdivision->div_name : 'N/A' }}</td>
<td>{{ $school->libdistrict ? $school->libdistrict->district_name : 'N/A' }}</td>
<td>{{$school->school_id}}</td>
<td>{{$school->school_name}}</td>
<td>{{$school->address}}</td>
<td>{{$school->school_head}}</td>
<td>{{$school->level}}</td>
</tr>
@endforeach
@else
<td colspan="7" class="text-danger">No records</td>
@endif
</table>
{{$data['schools']->links()}}
</div>
答案 0 :(得分:1)
尝试这个
<td>{{ ($data['schools']->currentPage()-1) * $data['schools']->perPage() + $loop->index + 1 }}</td>
当前页面提供页码,$ loop变量提供循环中当前项目的索引,以便您计算编号。
您可以像这样在2095年的1至5中显示:
Showing {{($data['schools']->currentPage()-1)* $data['schools']->perPage()+($data['schools']->total() ? 1:0)}} to {{($data['schools']->currentPage()-1)*$data['schools']->perPage()+count($data['schools'])}} of {{$data['schools']->total()}} Results
希望您能理解
答案 1 :(得分:1)
使用$loop
变量和当前页面来计算行号。
<td>{{ ($data['schools']->currentPage() - 1) * $data['schools']->perPage() + $loop->iteration }}</td>
计算方法是当前页面减去一,乘以页面大小(以计算前几页),再加上当前页面上的索引。
答案 2 :(得分:1)
由于上述所有答案都缺少现成的方法
我的答案适用于Laravel版本 5.0及更高版本
我当前的版本 5.8.28
您不需要任何模糊计算
只需尝试
showing {{$data['schools']->firstItem()}} to {{$data['schools']->lastItem()}} of {{$data['schools']->total()}}
编辑获取行号的方法
方法一
@forelse ($data['schools'] as $school)
{{-- Just Add iteration property of $loop Object --}}
<td>{{$loop->iteration}}</td>
{{-- All Your Fileds Goes Here --}}
@empty
<td colspan="7" class="text-danger">No records</td>
@endforelse
但是它不会按预期方式工作,因为如果您要更改页面,则iteration
属性将从数字1开始
所以
第二种方法
{{ ($data['schools']->currentpage()-1) * $data['schools'] ->perpage() + $loop->index + 1 }}
如果您甚至更喜欢短方法
{{($data['schools']->firstItem() + $loop->index)}}
它将为您提供实际的序列号
如果出现错误,请发表评论
答案 3 :(得分:1)
要对集合中的项目进行编号并像在控制器中进行foreach循环一样简单地添加数据,则视图中始终都具有编号(顺便说一下,这些编号未存储到数据库中)< / p>
$i = 1;
foreach ($schools as $item)
{
$item->setAttribute('number', $i);
$i++;
}
并在视图行上
{{$item->number}}
答案 4 :(得分:0)
在您的控制器中:
$users = User::all()->paginate(3);
return view('/', compact('users'));
在您的刀片中
@foreach($users as $key => $user)
<tr>
<td>{{ $users->firstItem() + $key }}</td>
<td>{{ $user->name }}</td>
<td>{{ $user->email }}</td>
</tr>
@endforeach