首页 > 解决方案 > 如何修复表中的序列号列而其他列是动态的?拉拉维尔 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'],

       });
   });

如果第一列显示修复序列号,那么我可以用它来显示排名。

谢谢。

标签: phphtmlmysqllaravelhtml-table

解决方案


通过使用 for 循环中的键,您正在刀片视图中使用 php 计算排名。您必须首先按排名分数对访问者数组进行排序,然后使用循环显示它们。理想情况下,这是在您的数据库中使用 order by 子句完成的,或者您可以在您的视图中执行此操作:

@foreach($visitors->sortByDesc(‘rank_score’)->values() as $key=>$visitor)

values()排序后重置您需要的键。

使用 JavaScript,您可以使用排名和顺序列(升序)。


推荐阅读