Извините, я довольно новичок в graphQL и маяке. Я не уверен, что это ошибка или я что-то пропустил в документации. Я использовал стандартный распознаватель страниц, и запросы работали нормально. Однако мне нужно было добавить некоторые параметры, поэтому я следовал за документацией, чтобы построить свой собственный ... строитель. Два из моих полей имеют пользовательские типы. Нет проблем при использовании paginator по умолчанию, но при использовании моего собственного компоновщика я получаю такие ошибки
Expected a value of type "ViewingRequestStatus" but received: 3
Я думаю, что это связано с использованием обычного 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")
}
App \ ViewingRequestRead
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 расширяет 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.
Output / Логи
Нажмите, чтобы развернуть
"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