Laravel 独特的更新规则,无法正常工作

Posted

技术标签:

【中文标题】Laravel 独特的更新规则,无法正常工作【英文标题】:Laravel unique rules on update, not working properly 【发布时间】:2017-04-28 09:41:26 【问题描述】:

来自This 的回答我正在尝试更新部门数据。代码如下:

$id = Crypt::decrypt($id); 
        $rules = Department::$rules;

        $rules['name']              = $rules['name'] . ',id,' . $id;
        $rules['department_code']   = $rules['department_code'] . ',id,' . $id;

        dump($rules);

        $validator = Validator::make($data = $request->all(), $rules);
        if ($validator->fails()) return Redirect::back()->withErrors($validator)->withInput();

        $department = Department::findOrFail($id);

但是验证器说:

部门代码已被占用。

这个名字已经被占用了。

那怎么了?

我的rules 数组是:

public static $rules = [
        'name'              =>  'required|unique:departments|max:255', 
        'department_code'   =>  'required|unique:departments|max:127',
    ];

【问题讨论】:

【参考方案1】:

将您的 $rules 数组更改为:

public static $rules = [
        'name'              =>  'required|max:255|unique:departments', 
        'department_code'   =>  'required|max:127|unique:departments',
    ];

然后您可以使用它在规则中附加id

【讨论】:

我已将规则更改为 public static $rules = [ 'name' => 'required|max:255|unique:departments', 'department_code' => 'required|max:127|unique:departments', ]; 。现在name 规则工作正常,但仍然收到消息The department code has already been taken. 表中department_code 的列名称是什么?如果不是department_code,那么您必须在规则中提供unique:departments,code。 Docs

以上是关于Laravel 独特的更新规则,无法正常工作的主要内容,如果未能解决你的问题,请参考以下文章

Laravel更新模型,具有属性的唯一验证规则

mysql 字符集 utf 8 排序规则(dup 键)无法正常工作

Laravel 唯一的验证规则,除了不工作

UTF 8 编码在 PHP 中无法正常工作

代客工作但无法创建新的 Laravel 安装?

MongoDB + Mongoose:独特:真正无法正常工作[重复]