我有一个表格:
<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.*
而不是创建另一个字段名称,而不是循环遍历数组 .
我的Laravel Framework是版本5.4.19 . 根据the docs, name.*
应该在验证期间迭代数组 .
我做错了什么?
1 回答
默认情况下,如果您没有为
unique
规则提供列名,Laravel将添加输入名称,在您的情况下,输入名称是一个数字 .要解决此问题,请将规则更改为以下内容: