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 个列表?你到底是什么意思?
我的 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 个列表?你到底是什么意思?