【发布时间】:2021-01-24 23:14:22
【问题描述】:
我有一个相当简单的查询,我加载并向对象添加一个元素,然后根据该自定义元素对其进行排序。我想获取 20 条记录或对其进行分页,但是当我这样做时,很多数据都消失了。
这是我的代码。下面的片段获得了所有的记录。
$fighters = Fighter::all();
以下代码获取函数中的点并将其添加到战斗机中,战斗机点最初不存在于集合中,它是在下面创建和填充的。
foreach ($fighters as $fighter) {
$fighter->fighterPoints = $fighter->getFighterPoints($fighter->id);
}
然后我想用下面的函数按这些 fighterPoints 对所有内容进行排序。
$sorted = $fighters ->sortByDesc(function ($item, $key) {
return $item->fighterPoints ;
});
当我这样做时,我得到了大约 9000 条左右的所有记录,然后它会正确地对 fighterPoints 进行排序: 第一条记录类似于 [FighterName, 21309]
当我执行$fighters = Fighter::paginate(20); 时,它只是以 [FighterName384, 200] 开头,应该是 [FighterName, 21309] 并且只有 20 个结果。 ::take(20) 方法也会发生同样的事情。
我在这里做错了什么?我是 laravel 8.
【问题讨论】:
-
排序后的结果会不会在
$sorted中?所以当你分页时你需要使用它吗? -
不能在 $sorted 函数上使用->分页。