首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >拉勒维尔灯塔如何使用@paginate指令与.php文件?

拉勒维尔灯塔如何使用@paginate指令与.php文件?
EN

Stack Overflow用户
提问于 2022-09-24 18:14:57
回答 2查看 134关注 0票数 0

我正在使用灯塔实现一个查询。

我正在使用@paginate指令,但它是一个复杂的条件,我想将它写入一个.php文件中。

我已经看过了,也想不出怎么做了,所以我需要帮助。

下面的方法无法得到关系并导致null。

graphql - Laravel灯塔分页结果-堆栈溢出Laravel Lighthouse paginate field result

分页指令x灯塔https://lighthouse-php.com/3/api-reference/directives.html#paginate

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2022-09-26 07:41:36

看这个模板。

Schema.graphql:

代码语言:javascript
复制
"Get a list of all cars."
    Cars(filter: carsFilter): [Car!]! @paginate(builder: "App\\GraphQL\\Queries\\Cars")

Cars.php:

代码语言:javascript
复制
public function __invoke($_, array $args, ?GraphQLContext $context, ResolveInfo $resolveInfo):Builder {

$carsQuery = Cars::query();

// Do whatever you want with your query.

/* @var QueryBuilder|EloquentBuilder|ScoutBuilder|Relation $carsQuery */
return $carsQuery;
}

注意,在php类中,必须返回查询生成器实例,而不是集合。

票数 1
EN

Stack Overflow用户

发布于 2022-09-30 21:54:11

当您在分页指令中使用构建器参数时,您将失去模型所具有的变异器。(因为要用自定义构建器替换查询生成器)。

如果可能的话,尝试使用作用域。这样,你就不会失去你的模型上的变异器或铸件。

代码语言:javascript
复制
Cars(filter: carsFilter): [Car!]! @paginate(scopes: ["myCondition", "mySecondCondition")

可以将作用域作为模型中的函数添加,如下所示:

代码语言:javascript
复制
public function scopeMyCondition(Builder $query): Builder
{
    return $query->where('color', '<>', 'red');
}

public function scopeMySecondCondition(Builder $query): Builder
{
    return $query->whereIn('mts', '>', 100);
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73839582

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档