我有一张表格:
<input type="text" name="name[1]">
<input type="text" name="name[2]">
<input type="text" name="name[3]">
<input type="submit" value="Submit">
我已经使用规则创建了表单验证文件:
class formRequest extends FormRequest {
....
public function rules()
{
return ['name.*' => 'unique:names'];
}
public function messages()
{
return ['name.unique' => 'Name is already in DB!'];
}
在输入中提交带有值(例如“John”)的表单(例如name[1]
)后,数据库中已存在,我得到:
SQLSTATE [42S22]:未找到列:1054'where子句'中的未知列'name.1'(SQL:从`names`中选择count(*)作为聚合,其中`name` .1` = John)
所以它正在处理name.*
而不是创建另一个字段名称,而不是循环遍历数组。
My Laravel Framework是版本5.4.19。根据{{3}},name.*
应该在验证期间迭代数组。
我做错了什么?
答案 0 :(得分:2)
默认情况下,如果您没有为unique
规则提供列名,Laravel将添加输入名称,在您的情况下,输入名称是一个数字。
要解决此问题,请将规则更改为以下内容:
return ['name.*' => 'unique:names,name'];