php - 如何修复表中的序列号列而其他列是动态的?拉拉维尔 7
问题描述
我有一个包含 5 列的 LEADERBOARD 表。我可以使用脚本对用户的SCORE (第 5 列)表进行自动排序(即表顶部的最高得分者) 。但是当表格自动排序时,序列号(第 1 列)也发生了变化。我想使用第一列来显示用户的排名,所以它必须像 1、2、3、4 等等。但它会随着用户分数的变化而不断变化。
这是表结构:
<thead>
<tr>
<th>Rank</th>
<th>Gravatar</th>
<th>Name</th>
<th>Branch</th>
<th>Score</th>
</tr>
</thead>
<tbody class="searchable">
@if(count($visitors)>0)
@foreach($visitors as $key=>$visitor)
<tr>
<td>{{$key+1}}</td>
<td><img style="border-radius: 50%" width="50px" height="50px" src="{{ Gravatar::src($visitor->email) }}"></td>
<td>
<a href="/profile/{{$visitor->id}}">
{{$visitor->name}}
</a>
</td>
<td>{{$visitor->branch}}</td>
<td>{{$visitor->rank_score}}</td>
</tr>
@endforeach
@else
<td>No User at this time.</td>
@endif
</tbody>
这是脚本:
$(document).ready(function() {
$('#userTable').DataTable({
"order": [4, 'rank_score'],
});
});
如果第一列显示修复序列号,那么我可以用它来显示排名。
谢谢。
解决方案
通过使用 for 循环中的键,您正在刀片视图中使用 php 计算排名。您必须首先按排名分数对访问者数组进行排序,然后使用循环显示它们。理想情况下,这是在您的数据库中使用 order by 子句完成的,或者您可以在您的视图中执行此操作:
@foreach($visitors->sortByDesc(‘rank_score’)->values() as $key=>$visitor)
values()
排序后重置您需要的键。
使用 JavaScript,您可以使用排名和顺序列(升序)。
推荐阅读
- xquery - Marklogic:什么是使用 xquery 的字段范围查询和路径范围查询 cts 函数
- javascript - 无法从 Fetch 设置变量
- javascript - 任务队列中哪个任务(setTimeout 或单击事件)优先?
- javascript - @type 中的 JSDoc 引用对象变量
- java - Apache POI:如何在数据透视的行标签日期中设置 THIS_YEAR 过滤器
- git - 错误:无法生成 C:/Windows/system/32/OpenSSH/ssh.exe
- javascript - 如何通过单击孵化器 eCharts 中的轴标签刻度来切换整个组?
- java - 如何使用 PDFBox 从 PDF 文档中删除链接
- git - 在执行“git submodule add...”时,如何获取有关两个项目的结帐版本的信息?
- python-3.x - 从 pandas 数据框中另一列中的值创建变量