我在验证输入数组和使用unique:验证规则进行检查时遇到了麻烦,我希望有人可以进一步帮助我。
从视图中输入(多个):
<input type="text" class="form-control" name="contactNames[]" required>
我的dd($ request)的示例:
+request: ParameterBag {#44 ▼
#parameters: array:6 [▼
"_token" => "0WBYH4G4aB4XtkQ1Vx29cIvaH7SbYYVcXI6yOuNn"
"name" => "Brand Name"
"groupCheckbox" => array:3 [▶]
"contactNames" => array:2 [▼
0 => "Contact Name 1"
1 => "Contact Name 2"
]
"emails" => array:2 [▼
0 => "test@test.com"
1 => "test2@test.com"
]
"contactNumbers" => array:2 [▼
0 => "07777777777"
1 => "07777777777"
]
]
}
并在我的控制器内进行验证:
$request->validate([
'name' => 'required|string|max:255|unique:brands',
'contactNames' => 'required|array',
'contactNames.*' => 'required|max:255|string|distinct|unique:brand_managers',
'emails' => 'required|array',
'emails.*' => 'required|max:255|email|distinct|unique:brand_managers',
'contactNumbers' => 'array',
'contactNumbers.*' => 'numeric',
'groupCheckbox' => 'required|min:1'
]);
我需要检查用户名是否唯一-如果我不使用unique:
验证规则并且数据正确发布到我的数据库中,则验证工作正常,但是我不想使用多个品牌经理具有相同的详细信息,因此需要验证姓名和电子邮件地址的唯一性
我得到的错误是:
SQLSTATE [42S22]:找不到列:1054未知列 “ where子句”中的“ contactNames.0”(SQL:选择count(*)作为聚合 来自
brand_managers
,其中contactNames
。0
=联系人姓名1)
感谢您的预先帮助
答案 0 :(得分:2)
我找到了一个解决方案-感谢您的帮助-将来可能遇到相同问题的其他人是我的解决方案:
$request->validate([
'name' => 'required|string|max:255|unique:brands',
'contactNames' => 'required|array',
'contactNames.*' => ['required', 'max:255', 'string', 'distinct', Rule::unique('brand_managers', 'name')],
'emails' => 'required|array',
'emails.*' => ['required', 'max:255', 'email', 'distinct', Rule::unique('brand_managers', 'email')],
'contactNumbers' => 'array',
'contactNumbers.*' => 'numeric',
'groupCheckbox' => 'required|min:1'
]);