Laravel 4验证

Kev*_*amp 6 php validation laravel eloquent laravel-4

我在创建新用户时使用以下规则进行验证:

protected $rules= [
    'name'    => 'required',
    'email'    => [
        'required',
        'unique:user',
        'email'
    ]
];
Run Code Online (Sandbox Code Playgroud)

更新现有用户时,我使用与上面所示相同的规则集,但如果用户根本没有更改其电子邮件,则不希望出现验证错误.

我目前通过使用以下方法解决此问题:

if (!User::changed('email')) {
    unset($user->email);
}
Run Code Online (Sandbox Code Playgroud)

对我来说这感觉就像一个肮脏的解决方法,所以我想知道是否有更好的选择.

还要注意,这个changed方法是我自己写的.有没有人知道是否有一个用于检查模型属性是否已更改的本机Laravel 4方法?

谢谢!

Hol*_*eis 9

唯一验证规则允许忽略给定的ID,在您的情况下,ID是您要更新的数据集的ID.

'email' => 'unique:users,email_address,10'
Run Code Online (Sandbox Code Playgroud)

http://four.laravel.com/docs/validation#rule-unique

  • 顺便说一下,我通过在验证规则中使用占位符`:id:`来解决这个问题,然后在验证之前处理规则:https://github.com/betawax/role-model/blob/master/src/Betawax/RoleModel/ RoleModel.php#L86,L101 (5认同)