我正在Laravel中更新用户,在这里我制定了以下验证规则来更新用户电子邮件:
"email" => "required|email|unique:users,email,".$this->route("user")->id,
这在我的表单请求中。 但是,当我发帖时,仍然说电子邮件已经被拿走了?这可能是Laravel最新版本中的错误吗?
谢谢!
答案 0 :(得分:1)
不,这不是bug,您将null
值用作ID,因此将您的规则更改为此:
"email" => "required|email|unique:users,email,".$this->user()->id,
请确保您的方法中包含Request $request
,并且您的控制器上还具有身份验证中间件。
答案 1 :(得分:0)
您设置了“忽略电子邮件”列,因此您应该传递的电子邮件不是id
source ~/.bashrc
答案 2 :(得分:0)
首先,您必须在用户模型中添加规则
static function rules() {
return [
'email' => 'required|email'
];
}
在用户控制器中
use Illuminate\Validation\Rule; // add this one
function add_update_user(Request $request,$user_id) {
$data = $request->all();
unset($data['_token']);
$rules = User::rules();
$rules['email'] = explode('|', $rules['email']);
if (isset($user_id)) // is old user, your get user_id in route
{
$rules['unique_code'][] = Rule::unique('databse_connection_name.users')->ignore($data['email'], 'email');
} else // is new user
{
$rules['email'][] = 'unique:databse_connection_name.users,email';
}
$validator = Validator::make($data, $rules);
...
...
}