在切换到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_id
(site_id
应该被视为只读属性)以及如何在我的自定义验证规则UniqueUserName
中访问它?
答案 0 :(得分:2)
可以通过扩展ValidationDirective
类来实现复杂的验证逻辑。
然后就像在laravel标准请求验证中一样,可以在rules()
方法中编写规则。可通过$this->args['site_id']
获得参数。
更多信息:https://lighthouse-php.com/master/security/validation.html#validate-fields