Octobercms - 按变量排序记录,如果值相同,则按第二个变量排序

时间:2018-04-08 21:34:50

标签: php mysql sorting octobercms

我在10月cms上创建了一个前端排行榜。 我目前使用的系统如下:

当我编辑其中一个存储db的值的输入时,javascript获取值并将其与隐藏输入中的所有其他值相加,该输入将总和存储在db字段中。

因此,当我想按总点数获取记录列表时,我只是这样做:

use RainLab\User\Models\User;

function onInit() {
   $this['activatedUsers'] = User::whereIsActivated(true)->orderBy('RankPoints', 'desc')->get();
}

按包含总和的字段对结果进行排序。

这就是目前的情况并且工作得很好。我想要实现的是通过一个变量(例如x)对记录进行排序。但是如果两个用户对x具有相同的值,则使用另一个变量(y)对它们进行排序。最终我想用两个以上的变量做这个,但我想从这个简单的两个变量系统开始,这样我才能理解思考过程。

示例:

enter image description here

用户(a)使用当前方法位于用户(b)之上,因为它在其他变量中具有更高的数字。但是,如果我想按级别排序所有用户,然后按健身点数排序,则玩家(b)实际上会排在最前面。

希望你们能理解&帮忙, 提前谢谢。

编辑:

在查询中使用第二个变量添加第二个orderby似乎有效,这个方法是否正确?

1 个答案:

答案 0 :(得分:1)

使用MySQL,只需使用多个ORDER BY条件就可以按多个值排序结果。

例如,以下内容将首先按级别排序用户,其次按排名点排序。

$users = User::whereIsActivated(true)
    ->orderBy('Level', 'desc')        // x
    ->orderBy('RankPoints', 'desc')   // y
    ->get();
相关问题