突变 nuwave/lighthouse:^5.0 和输入错误
Error in mutation nuwave/lighthouse:^5.0 and input
我正在使用 nuwave/lighthouse:^5.0,我正在尝试为具有 belongsTo 关系的实体创建突变。问题是,在我的输入中,我使用消毒剂指令从字符串转换为 id,但之后当 Laravel 获取属性时,它显示 class 验证错误。另外,我调试了指令代码,它工作正常。
Error
"errors": [
{
"message": "The given data was invalid.",
"extensions": {
"validation": {
"content_type_id": [
"The content type id field is required."
]
},
"category": "validation"
},
Input
input CreateContentInput {
content_type: CreateContentTypeBelongsTo!
.....
input CreateContentTypeBelongsTo {
connect: ID! @typeuuid(model: "App\ContentType")
create: CreateContentTypeInput
update: UpdateContentTypeInput
}
Model
class Content extends Model
{
protected $rules = [
'content_type_id' => 'required|integer|is_main_content_type',
];
/**
* @return BelongsTo
*/
public function contentType(): BelongsTo
{
return $this->belongsTo(ContentType::class);
}
任何想法将不胜感激
终于,过了几天,我发现了问题。
错误来自主输入定义:
input CreateContentInput {
content_type: CreateContentTypeBelongsTo!
}
我遵循的公司标准规定我们需要始终在 ** snake case ** 中使用属性,尽管它们是关系。所以看起来 Lighthouse 总是使用 ** 驼峰式 ** 来表示关系。
解决方案是将 ** 重命名 ** 属性 添加到输入中。所以正确的输入应该是:
input CreateContentInput {
content_type: CreateContentTypeBelongsTo! @rename (attribute: "contentType")
}
我希望这可以帮助其他人。
我正在使用 nuwave/lighthouse:^5.0,我正在尝试为具有 belongsTo 关系的实体创建突变。问题是,在我的输入中,我使用消毒剂指令从字符串转换为 id,但之后当 Laravel 获取属性时,它显示 class 验证错误。另外,我调试了指令代码,它工作正常。
Error
"errors": [
{
"message": "The given data was invalid.",
"extensions": {
"validation": {
"content_type_id": [
"The content type id field is required."
]
},
"category": "validation"
},
Input
input CreateContentInput {
content_type: CreateContentTypeBelongsTo!
.....
input CreateContentTypeBelongsTo {
connect: ID! @typeuuid(model: "App\ContentType")
create: CreateContentTypeInput
update: UpdateContentTypeInput
}
Model
class Content extends Model
{
protected $rules = [
'content_type_id' => 'required|integer|is_main_content_type',
];
/**
* @return BelongsTo
*/
public function contentType(): BelongsTo
{
return $this->belongsTo(ContentType::class);
}
任何想法将不胜感激
终于,过了几天,我发现了问题。
错误来自主输入定义:
input CreateContentInput {
content_type: CreateContentTypeBelongsTo!
}
我遵循的公司标准规定我们需要始终在 ** snake case ** 中使用属性,尽管它们是关系。所以看起来 Lighthouse 总是使用 ** 驼峰式 ** 来表示关系。
解决方案是将 ** 重命名 ** 属性 添加到输入中。所以正确的输入应该是:
input CreateContentInput {
content_type: CreateContentTypeBelongsTo! @rename (attribute: "contentType")
}
我希望这可以帮助其他人。