php - Lighthouse php laravel - 枚举和分页器不起作用
问题描述
抱歉,我对 graphQL 和 lighthouse 还很陌生。我不确定这是否是一个错误,或者我是否错过了文档中的某些内容。我使用了默认的分页器解析器并且查询工作正常。但是我需要添加一些参数,所以按照文档构建我自己的...构建器。我的两个字段具有自定义类型。使用默认分页器时没有问题,但是使用我的自定义构建器时,我会收到这样的错误
Expected a value of type "ViewingRequestStatus" but received: 3
我认为这与使用常规 DB Builder 而不是雄辩的 DB Builder 有关,但分页器需要常规 DB Builder。
架构
type ViewingRequest @model(class: "\\AppViewingRequestRead"){
uuid: String!
requestorUuid: String!
scheduleUuid: String!
districtUuid: String!
congregationUuid: String!
siteUuid: String
status: ViewingRequestStatus
language: Languages
user_uuid: String
streamEventUuid: String!
}
type Languages{
name: String
id: Int
}
extend type Query {
viewingRequests(
streamEventUuid: String,
scheduleUuid: String,
requestorUuid: String
): [ViewingRequest!]! @paginate(model: "App\\ViewingRequestRead", builder: "App\\ViewingRequestRead@showRequests")
}
应用\查看请求读取
class ViewingRequestRead extends IncRead
{
protected $enumCasts = [
'status' => ViewingRequestStatus::class,
'language' => Languages::class,
];
protected $casts = [
'status' => 'int',
'language' => 'int'
];
public function showRequests($root, array $args, GraphQLContext $context, ResolveInfo $resolveInfo): Builder
{
return DB::table('viewing_requests')
->when(key_exists("streamEventUuid", $args), function ($q) use ($args) {
return $q->where('streamEventUuid', '=', $args["streamEventUuid"]);
})->when(key_exists("scheduleUuid", $args), function ($q) use ($args) {
return $q->where('scheduleUuid', '=', $args["scheduleUuid"]);
})->when(key_exists("requestorUuid", $args), function ($q) use ($args) {
return $q->where('requestorUuid', '=', $args["requestorUuid"]);
});
ViewingRequestEnum (IncEnum Extends BenSampo\Enum\Enum) 如灯塔文档中所述。
<?php
namespace App\Enums;
use App\Enums\IncEnum;
final class ViewingRequestStatus extends IncEnum
{
const Archived = 0;
const New = 1;
const LocaleSubmitted = 2;
const DistrictSubmitted = 3;
const LocaleApproved = 4;
const DistrictApproved = 5;
const CentralApproved = 6;
const Cancelled = 7;
const Denied = 8;
const Draft = 9;
}
这是通过 GraphQlServiceProvider 注册的。
输出/日志
点击展开
"debugMessage" => "Expected a value of type "Languages" but received: 1"
"message" => "Internal server error"
"extensions" => array:1 [
"category" => "internal"
]
"locations" => array:1 [
0 => array:2 [
"line" => 8
"column" => 21
]
]
"path" => array:4 [
0 => "viewingRequests"
1 => "data"
2 => 2
3 => "language"
环境
灯塔版本:4.11.0 Laravel 版本:7.5.1
解决方案
推荐阅读
- video - 如何使用 ffmpeg 或 imagemagick 将两个图像序列与 alpha 通道批量组合?
- c - 如何将字符串解析为结构?
- sql - 如何使用 SQL Server Management Studio 2008R2 从两台计算机上的两个表中求和
- android - 如何加快基于 ARM 的 AVD 的速度以使其真正可用?
- ibm-mobilefirst - MFP 8.0 WLAuthorizationManager.obtainAccessToken 返回错误,错误代码为 CHALLENGE_HANDLING_CANCELED
- python - 递归调用是否会使 Jupyter 笔记本内核崩溃
- json - 如何告诉 MVC 中的 JsonResult 操作方法使用不同的序列化器方法
- python - 打开的文件有数据,但在 python 中返回长度 0
- javascript - 共享包的 Webpack 4 关闭问题
- javascript - 如何序列化返回 Promises 的 Javascript 函数数组?