抱歉,我对 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