1

在切换到 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

4

1 回答 1

2

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

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

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

于 2019-12-06T21:32:46.897 回答