如何在Laravel+lighthouse graphql 中实现高级验证规则?
How to implement advanced validation rules in Laravel+lighthouse graphql?
在切换到 Lighthouse 之前,我曾经有这样的验证规则:
Rule::unique('users', 'name')->where('site_id', $this->route()->parameter('site')->id)->ignore($this->route()->parameter('user')->id),
所以在检查用户名是否唯一之前,我需要 select 具有特定 site_id
的用户。现在我有以下突变:
updateUser(
name: String! @rules(apply: ["App\Rules\UniqueUserName"])
): User! @update
但是我应该如何提供 site_id
(site_id
应该被视为只读属性)以及如何在我的自定义验证规则中访问它 UniqueUserName
?
可以通过扩展 ValidationDirective
class.
来实现复杂的验证逻辑
然后可以在rules()
方法中编写规则,就像在laravel 标准请求验证中一样。参数可通过 $this->args['site_id']
.
获得
更多信息:https://lighthouse-php.com/master/security/validation.html#validate-fields
在切换到 Lighthouse 之前,我曾经有这样的验证规则:
Rule::unique('users', 'name')->where('site_id', $this->route()->parameter('site')->id)->ignore($this->route()->parameter('user')->id),
所以在检查用户名是否唯一之前,我需要 select 具有特定 site_id
的用户。现在我有以下突变:
updateUser(
name: String! @rules(apply: ["App\Rules\UniqueUserName"])
): User! @update
但是我应该如何提供 site_id
(site_id
应该被视为只读属性)以及如何在我的自定义验证规则中访问它 UniqueUserName
?
可以通过扩展 ValidationDirective
class.
然后可以在rules()
方法中编写规则,就像在laravel 标准请求验证中一样。参数可通过 $this->args['site_id']
.
更多信息:https://lighthouse-php.com/master/security/validation.html#validate-fields