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

标签 php mysql sorting octobercms

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

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

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

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 似乎可行,这种方法正确吗?

最佳答案

使用 MySQL,只需使用多个 ORDER BY 条件即可按多个值对结果进行排序。

例如,以下代码将首先按级别对用户进行排序,然后再按排名分数排序。

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

关于php - Octobercms - 按变量排序记录,如果值相同,则按第二个变量排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49722998/

相关文章:

mysql - 是否可以在 MySQL 中为 VARCHAR 列设置约束?

java - 对 map 中的日期字符串进行排序

javascript - 根据 AngularJS 中的两个变量进行升序排序/排序

php - 从 WooCommerce 中的另一个脚本添加客户备注

javascript - 无需加载页面即可交换内部图库和 HTML

mysql - 优化查询重复

c# - 对不同长度的二维数组进行排序

php - 使用命名空间时无法使用 require_once 加载类

php - 文件夹 php mysql 中设置的 session

mysql - 我似乎无法让本地共享 MySQL 数据卷保留在 Docker for Windows 上