【问题标题】:Validation rules in laravel 4.2 involving database recordslaravel 4.2 中涉及数据库记录的验证规则
【发布时间】:2015-09-21 13:17:05
【问题描述】:

我创建了一个更新函数,我的控制器有这 5 列,即 ID、用户名、描述和用户类型。因为我希望我的记录中的所有用户名都是唯一的,所以我在我的规则中添加了unique:dbo_systemusers,SystemUserName。我的问题是当我更新某个记录时说例如用户名:benny,描述:开发人员,用户类型:管理员然后我想将描述更新给程序员会有一个错误说用户名已经存在。是否有一条规则,它只检查用户名在表中其他记录上的唯一性,而不是我当前所在的记录? 这是我当前的规则代码

$rules = array(
        'username'     => 'required|min:2|max:50|regex:/^[a-zA-Z0-9\-\s]+$/|unique:dbo_systemusers,ID,'.$id,
        'description'  => 'required|min:1|max:100|regex:/^[a-zA-Z0-9\-\s]+$/',
        'usertype'     => 'required|numeric',
        'capt'         => 'required|numeric'
    );

【问题讨论】:

  • 我能看到你的控制器在哪里更新特定用户吗?

标签: php laravel-4


【解决方案1】:

如果您想更新特定用户,您必须强制使用唯一规则以忽略给定 ID。

试试这个:

$rules = array(
    'username'     => 'required|min:2|max:50|regex:/^[a-zA-Z0-9\-\s]+$/|unique:dbo_systemusers,ID,'.$id, //you want user $id here to ignore the unique rule
    'description'  => 'required|min:1|max:100|regex:/^[a-zA-Z0-9\-\s]+$/',
    'usertype'     => 'required|numeric',
    'capt'         => 'required|numeric'
);

【讨论】:

  • 我添加了它,但我有错误说 SQLSTATE[42S22]: Column not found: 1054 Unknown column 'id' in 'where clause' (SQL: select count(*) as aggregate from dbo_systemusers` where SystemUserName = 23434234 和 id 6)` 有什么想法吗?
  • 你的id在你的数据库里叫什么名字?
  • 嗯,它有Undefined variable: SystemUserID
  • 我可以看看你的控制器吗?
  • 这里是第一部分
猜你喜欢
  • 1970-01-01
  • 2019-05-02
  • 2019-06-24
  • 1970-01-01
  • 1970-01-01
  • 2015-02-21
  • 2017-07-09
  • 2020-06-09
  • 1970-01-01
相关资源
最近更新 更多