Laravel验证器唯一,但用户ID不起作用


Laravel validator unique except user id not working

我有一个设置表单,用户可以在其中更新他们的信息。

我的验证代码看起来像

    $rules = array(
        'active'    => 'required',
        'email'     => 'email',
        'username'  => "required|alphaNum|unique:users,username,{{$id}}",
        'password'  => 'sometimes|min:3'
    );

$id包含当前用户的用户 ID。

但是当username值是用户的当前用户名时,我不断收到The username has already been taken.错误消息。

我也尝试了这条线作为'username' => "required|alphaNum|unique:users,username,".$id,

要将变量嵌入到字符串中,必须使用"双引号:

$rules = array(
    'active'    => 'required',
    'email'     => 'email',
    'username'  => "required|alphaNum|unique:users,username,{{$id}}",
    'password'  => 'sometimes|min:3'
);

我不得不将字符串转换为$id,所以它是:

'username' => "required|alphaNum|unique:users,username,".(string)$id,

如果您使用 primaryKey 作为 varchar。重要的是,给定的$id没有空格(修剪)。这让我花了几个小时才找到答案。