如何在Laravel + lighthouse graphql中实现高级验证规则?

时间:2019-12-06 21:12:22

标签: laravel graphql laravel-lighthouse

在切换到Lighthouse之前,我曾经有如下验证规则:

Rule::unique('users', 'name')->where('site_id', $this->route()->parameter('site')->id)->ignore($this->route()->parameter('user')->id),

因此,在检查用户名是否唯一之前,我需要选择具有特定site_id的用户。现在,我有以下突变:

updateUser(
    name: String! @rules(apply: ["App\\Rules\\UniqueUserName"])
): User! @update

但是我应该如何提供site_idsite_id应该被视为只读属性)以及如何在我的自定义验证规则UniqueUserName中访问它?

1 个答案:

答案 0 :(得分:2)

可以通过扩展ValidationDirective类来实现复杂的验证逻辑。

然后就像在laravel标准请求验证中一样,可以在rules()方法中编写规则。可通过$this->args['site_id']获得参数。

更多信息:https://lighthouse-php.com/master/security/validation.html#validate-fields