验证数据库的属性唯一性,但排除当前记录

时间:2016-01-11 01:41:53

标签: php mysql laravel

所以我有一个组织模型,它有一个唯一的属性'username',我正在尝试为这个属性添加验证规则。

<?php namespace Cuadrangular\Users\Validator\Organization;

use Cartalyst\Support\Validator;

class OrganizationValidator extends Validator implements OrganizationValidatorInterface {

    /**
     * {@inheritDoc}
     */
    protected $rules = [
        'username' => 'required|unique:organizations,username'
    ];

    /**
     * {@inheritDoc}
     */
    public function onUpdate()
    {
        $this->rules['username'] .= ',{id},id';
    }

}

但是udpate由于唯一约束而一直失败,如果我手动将{id}更改为组织的id我正在尝试更新它的工作原理。关于语法可能出错的任何线索?

我正在使用Laravel 5.1和https://github.com/cartalyst/platform并使用通过工作台生成的存储库和验证器

1 个答案:

答案 0 :(得分:0)

让我们说你在更新时有这个例子:

route.php
Route::put('update_profile/{user}', 'UserController@update');

您的验证请求将如下:

return[
    'username' => 'required|unique:users,username,' . $this->user
];

所以laravel将检查用户名的所有记录,除了具有当前id

的用户