【问题标题】:Laravel Validate Array of InputsLaravel 验证输入数组
【发布时间】:2017-11-13 04:14:56
【问题描述】:

我有一个表格:

<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!'];
}

在数据库中已经存在的输入(例如name[1])中提交带有值(例如'John')的表单后,我得到:

SQLSTATE[42S22]:未找到列:1054 'where 子句'中的未知列 'name.1'(SQL:从 `names` 中选择 count(*) 作为聚合,其中 `name`.`1` = John)

因此它将name.* 视为创建另一个字段名称,而不是循环遍历数组。

我的 Laravel 框架是 5.4.19 版本。根据the docsname.* 应该可以在验证期间遍历数组。

我做错了什么?

【问题讨论】:

标签: arrays forms laravel validation


【解决方案1】:

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

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

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

【讨论】:

  • 嘿,伙计!我花了一天时间寻找这个解决方案。他们在哪里写的,我应该提供列名???:)这真的让学习编程变得如此困难,因为您只是不知道在哪里寻找所需的信息并花几天时间尝试这个和那个......跨度>
  • 你对如何学习编程,特别是 Laravel 有什么建议吗?:)
  • 实际上,当你遇到问题时,Laravel 的文档很好,我建议从那里开始,学习 Laravel 的最佳网站是 Laracast,但它不是免费的 :( 检查唯一验证 here
  • 谢谢!在发布这个问题之前,我已经多次阅读该页面,但没有到他们列出“可用验证规则”的结尾......下次我会阅读整个页面:)
猜你喜欢
  • 2014-09-20
  • 2021-12-07
  • 2021-03-06
  • 1970-01-01
  • 2016-12-16
  • 1970-01-01
  • 2016-07-22
  • 2014-06-07
相关资源
最近更新 更多