Octobercms - 按变量排序记录,如果值相同,按第二个变量排序
Octobercms - Order records by variable, if value is the same, order by second variable
我正在 october cms 上创建前端排行榜。
我目前使用的系统如下:
当我编辑其中一个将值存储在数据库中的输入时,javascript 获取该值并将其与隐藏输入中的所有其他值相加,该隐藏输入将总和存储在数据库字段中。
因此,当我想按总分获取记录列表时,我只需要这样做:
use RainLab\User\Models\User;
function onInit() {
$this['activatedUsers'] = User::whereIsActivated(true)->orderBy('RankPoints', 'desc')->get();
}
按包含总和的字段对结果进行排序。
这就是目前的情况,并且工作得很好。我想要实现的是按一个变量(例如 x)对记录进行排序。但是如果两个用户的 x 值相同,它会用另一个变量 (y) 对他们进行排序。最终我想用两个以上的变量来做这个,但我想从这个简单的两个变量系统开始,这样我就能理解思维过程。
示例:
用户 (a) 在当前方法中位于用户 (b) 之上,因为它在其他变量中具有更高的编号。但是如果我想按级别对所有用户进行排序,然后按健身房积分对所有用户进行排序,玩家 (b) 实际上会排在最前面。
希望大家能够理解和帮助,
提前致谢。
编辑:
在查询中使用第二个变量添加第二个 orderby 似乎可行,此方法正确吗?
使用 MySQL,只需使用几个 ORDER BY
条件就可以按多个值对结果进行排序。
比如下面先按等级排序,再按排名积分排序。
$users = User::whereIsActivated(true)
->orderBy('Level', 'desc') // x
->orderBy('RankPoints', 'desc') // y
->get();
我正在 october cms 上创建前端排行榜。 我目前使用的系统如下:
当我编辑其中一个将值存储在数据库中的输入时,javascript 获取该值并将其与隐藏输入中的所有其他值相加,该隐藏输入将总和存储在数据库字段中。
因此,当我想按总分获取记录列表时,我只需要这样做:
use RainLab\User\Models\User;
function onInit() {
$this['activatedUsers'] = User::whereIsActivated(true)->orderBy('RankPoints', 'desc')->get();
}
按包含总和的字段对结果进行排序。
这就是目前的情况,并且工作得很好。我想要实现的是按一个变量(例如 x)对记录进行排序。但是如果两个用户的 x 值相同,它会用另一个变量 (y) 对他们进行排序。最终我想用两个以上的变量来做这个,但我想从这个简单的两个变量系统开始,这样我就能理解思维过程。
示例:
用户 (a) 在当前方法中位于用户 (b) 之上,因为它在其他变量中具有更高的编号。但是如果我想按级别对所有用户进行排序,然后按健身房积分对所有用户进行排序,玩家 (b) 实际上会排在最前面。
希望大家能够理解和帮助, 提前致谢。
编辑:
在查询中使用第二个变量添加第二个 orderby 似乎可行,此方法正确吗?
使用 MySQL,只需使用几个 ORDER BY
条件就可以按多个值对结果进行排序。
比如下面先按等级排序,再按排名积分排序。
$users = User::whereIsActivated(true)
->orderBy('Level', 'desc') // x
->orderBy('RankPoints', 'desc') // y
->get();