Laravel验证输入数组

时间:2017-06-11 17:28:08

标签: arrays forms laravel validation

我有一张表格:

<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.*应该在验证期间迭代数组。

我做错了什么?

1 个答案:

答案 0 :(得分:2)

默认情况下,如果您没有为unique规则提供列名,Laravel将添加输入名称,在您的情况下,输入名称是一个数字。

要解决此问题,请将规则更改为以下内容:

return ['name.*' => 'unique:names,name'];