突变 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")
}

我希望这可以帮助其他人。