如何在Lighthouse GraphQL(按随机顺序)中洗牌结果?

如何在Lighthouse GraphQL(按随机顺序)中洗牌结果?,graphql,laravel-lighthouse,Graphql,Laravel Lighthouse,我明白了,但我很好奇如何对我的灯塔图ql结果进行随机排序,有点像随机排序中的inin: 或者类似MySQL中的RAND(): SELECT col1, col2 FROM mytable ORDER BY RAND(); 目前,由于没有RANDSortOrder Enum,因此无法使用lighthouse开箱即用 你可以用一个范围 假设您想从表中随机抓取一些用户。在模式的用户查询中创建一个作用域。graphql type Query { posts( random: B

我明白了,但我很好奇如何对我的灯塔图ql结果进行随机排序,有点像随机排序中的
in
in:

或者类似MySQL中的
RAND()

SELECT col1, col2
FROM mytable
ORDER BY RAND();

目前,由于没有
RAND
SortOrder Enum,因此无法使用lighthouse开箱即用

你可以用一个范围

假设您想从表中随机抓取一些用户。在
模式的用户查询中创建一个作用域。graphql

type Query {
    posts(
        random: Boolean @scope(name: "random")
    ): [User!]!
}
App\User.php
中创建作用域:


// ...
/**
*随机洗牌用户
*
*@param\illighte\Database\elount\Builder$query
*@return\illumb\Database\elount\Builder
*/
公共函数范围($query){
返回$query->inRandomOrder();
}
// ...
利用查询中的范围:

{
  users(random: true) 
  {
    id,
    email,
    username
  }
}

这对于小型数据集很好,但请记住,对于大型数据集,这可能是一个性能瓶颈。

这很有效!我真的很感激。现在,我只需要找到一种方法,让我的
gql
仅在
随机变量为false时才包含其
orderBy
对象变量(该变量具有键
字段
顺序
)。
{
  users(random: true) 
  {
    id,
    email,
    username
  }
}