我看到了docs for @orderBy
,但很好奇如何将我的Lighthouse GraphQL结果随机排序,有点像Laravel中的inRandomOrder
:
$randomUser = DB::table('users')
->inRandomOrder()
->first();
或者像MySQL中的RAND()
:
SELECT col1, col2
FROM mytable
ORDER BY RAND();
答案 0 :(得分:2)
由于没有RAND
SortOrder枚举,因此目前不可能随便使用灯塔。
您可以为此使用范围。
假设您要从表中随机获取一些用户。在您的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
}
}
这对于小型数据集来说很好,但请记住,对于大型数据集,这可能是性能瓶颈。