我看到了文档,@orderBy
但很好奇如何随机排序我的 Lighthouse GraphQL 结果,有点像LaravelinRandomOrder
中的:
$randomUser = DB::table('users')
->inRandomOrder()
->first();
或者像RAND()
在 MySQL 中一样:
SELECT col1, col2
FROM mytable
ORDER BY RAND();
我看到了文档,@orderBy
但很好奇如何随机排序我的 Lighthouse GraphQL 结果,有点像LaravelinRandomOrder
中的:
$randomUser = DB::table('users')
->inRandomOrder()
->first();
或者像RAND()
在 MySQL 中一样:
SELECT col1, col2
FROM mytable
ORDER BY RAND();
目前,由于没有RAND
SortOrder 枚举,因此无法使用 lighthouse 开箱即用。
您可以为此使用范围。
假设您想从表中随机抓取一些用户。在您的用户查询中创建范围schema.graphql
type Query {
posts(
random: Boolean @scope(name: "random")
): [User!]!
}
在您的范围内创建App\User.php
:
// ...
/**
* Shuffles the users randomly
*
* @param \Illuminate\Database\Eloquent\Builder $query
* @return \Illuminate\Database\Eloquent\Builder
*/
public function scopeRandom($query) {
return $query->inRandomOrder();
}
// ...
在查询中使用范围:
{
users(random: true)
{
id,
email,
username
}
}
这对于小型数据集很好,但请记住,对于较大的数据集,这可能是性能瓶颈。