验证数组中的Laravel嵌套规则

时间:2019-03-04 09:08:04

标签: arrays laravel validation nested rules

我在Laravel上工作,我想编写优雅的验证规则:)有了这个框架,它确实很容易,但是当面对1:n关系时,我不知道如何解决这个问题。

我有两个资源,用户联系人。一个用户可以有多个联系人。

因此,我想要一个表格,您可以在其中填写所有用户字段 AND 所有联系人信息。 为此,我想编写一个这样的请求:

UserRequest:

public function rules()
    return [
        'name' => 'required|string',
        'email' => 'required|email|unique:exists:users,id',
        'contacts' => 'array',
        'contacts.*' => new ContactRequest() // This is the problem
    ]

我的问题是:如何应用这种类型的验证?特别是在使用数组时,如何进行模块化验证以应用嵌套资源的验证?还是应该改为开发ContactRule?

编辑:

我希望前端发送这样的表单:

` // POST: users
    {
        'name': 'UserName',
        'email': 'user@mail.com'
        'contacts': [
            [
                'email' => 'contac_1@mail.com',
                'contact_type_id => 1
            ],
                        [
                'email' => 'contac_2@mail.com',
                'contact_type_id => 2
            ],

    }
`

仅此而已, 谢谢!

1 个答案:

答案 0 :(得分:1)

我们有一个API,在每个请求中或可能在发布/补丁中包含100个结果。 我们仍然使用:

'data.relationships.users.data.*.id' => [
    'string',
    'unique:api_groups,name,' . ($this->route('group')->id ?? 0),
]

所以对你

'contacts.*.email' => 'required|email|unique:exists:users,id'

完美运行。它不会变得更复杂或什么。