arrays - 验证数组中的 Laravel 嵌套规则
问题描述
我使用 Laravel,我想编写优雅的验证规则 :) 使用这个框架真的很容易,但我不知道在面对 1:n 关系时如何处理这个问题。
我有两个资源,用户和联系人。一个用户可以有多个联系人。
所以,我想要一个表格,您可以在其中填写所有用户字段和所有联系人信息。为此,我想写一个这样的请求:
用户请求:
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
],
}
`
就是这样,谢谢!
解决方案
我们有一个 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'
完美运行。它不会变得更复杂或任何东西。
推荐阅读
- android - 启动 DJI 模拟的问题 [dji-sdk]
- python - 以下字符串需要正则表达式
- c++ - g++ 编译器错误:无效使用不完整类型... struct is_trivially_destructible
- php - 如何使用它们的 ID 动态获取 Tabs 和 Pills 中的数据?使用 PHP 和 Codeigniter
- javascript - 使用数据表向 Ajax 传递和获取 Id
- java - Vaadin 14:字段 c 的描述符无效 - 为什么会出现该错误?
- c++ - 制作语法解析器(C++ 编译器的一部分)
- mysql - mysql子查询查找等级
- c++ - C++ 中 std::multiset::count 的时间复杂度是多少?
- windows - 如何在 Windows 批处理脚本中加载多个程序?