Laravel查询顺序inrandomorder查询

Laravel query order the inrandormorder query

我的 table 中有 40 行,我想要的是随机获取 20 行,然后按 id 对这 5 个列表进行排序;这 2 个在一个查询中;

例如在id 1到40的范围内;我从随机顺序中得到 15 10 14 9 3;所以在最终结果中我希望得到 3 9 10 14 15

我尝试同时使用 inRandomOrder 和 orderBy

$query->inRandomOrder()->orderBy('id', 'asc')

但是inRandomOrder 查询始终是我查询的最终执行;如果我改变他们的立场:

$query->orderBy('id', 'asc')->inRandomOrder()

orderBy总是最后执行

2 个解决方案我想,如果你只操作几十行,你可以使用 Laravel 集合按 ID 对你的查询结果进行排序。

只需使用:

$result = $query->inRandomOrder()->get();

$resultSortedById = $result->sortBy('id');

或者使用SQL查询,你可以使用这个查询:

SELECT * FROM
(
    SELECT * FROM table
    ORDER BY RAND()
    LIMIT 20
) result
ORDER BY id ASC

您可以按 Eloquent 方式翻译,或直接按 SQL 方式翻译。

顺便说一下,我不确定是否理解您的问题:按 id 排序这 5 个列表?你到底是什么意思?