我在10月cms上创建了一个前端排行榜。 我目前使用的系统如下:
当我编辑其中一个存储db的值的输入时,javascript获取值并将其与隐藏输入中的所有其他值相加,该输入将总和存储在db字段中。
因此,当我想按总点数获取记录列表时,我只是这样做:
use RainLab\User\Models\User;
function onInit() {
$this['activatedUsers'] = User::whereIsActivated(true)->orderBy('RankPoints', 'desc')->get();
}
按包含总和的字段对结果进行排序。
这就是目前的情况并且工作得很好。我想要实现的是通过一个变量(例如x)对记录进行排序。但是如果两个用户对x具有相同的值,则使用另一个变量(y)对它们进行排序。最终我想用两个以上的变量做这个,但我想从这个简单的两个变量系统开始,这样我才能理解思考过程。
示例:
用户(a)使用当前方法位于用户(b)之上,因为它在其他变量中具有更高的数字。但是,如果我想按级别排序所有用户,然后按健身点数排序,则玩家(b)实际上会排在最前面。
希望你们能理解&帮忙, 提前谢谢。
编辑:
在查询中使用第二个变量添加第二个orderby似乎有效,这个方法是否正确?
答案 0 :(得分:1)
使用MySQL,只需使用多个ORDER BY
条件就可以按多个值排序结果。
例如,以下内容将首先按级别排序用户,其次按排名点排序。
$users = User::whereIsActivated(true)
->orderBy('Level', 'desc') // x
->orderBy('RankPoints', 'desc') // y
->get();