如何使用相同的电子邮件地址保存自己的个人资料?

Posted

技术标签:

【中文标题】如何使用相同的电子邮件地址保存自己的个人资料?【英文标题】:How can I save my own profile using the same email address? 【发布时间】:2016-06-17 17:42:30 【问题描述】:

我是 Laravel 的新手,我正在创建一个“更新个人资料”页面。一切都很好,除了保存我的个人资料。由于我已声明电子邮件必须是唯一的 - 我会收到错误消息。完全有道理。我一直在阅读this SO post,了解我认为是相同的问题。

我正在使用表单请求来处理我的验证:

 public function rules()

    return [
        'name' => 'required',
        'email' => 'required|unique:users,email,' . Auth::user()->id,
        ...
     ]

我的控制器:

public function store(UpdateAccountRequest $request)

    $input = $request->all();

    $user = new User();

    $user->name = $input['name'];
    $user->email = $input['email'];

    if ($user->save()) 
         ...
    
    ...

看起来我在 mysql 端遇到了错误:

Integrity constraint violation: 1062 Duplicate entry 'name@email.com' for key 'users_email_unique' 

来自 CodeIgniter,过去我会有一个带有用户 ID 或其他内容的隐藏字段,并检查用户 ID 是否正在编辑他们自己的帐户。如果是这样,验证将通过。我不确定解决这个问题的最佳方法。

谢谢!

【问题讨论】:

【参考方案1】:

解决方案

我犯了一个愚蠢的错误。我正在创建一个新用户,然后尝试保存它。这就是为什么我能够通过 Laravel 的验证,但不能通过 MySQL 的唯一索引。

我需要的是这个:

$user = User::find(Auth::user()->id);  // Get the current user.

而不是这个:

$user = new User();  // Create a new user

【讨论】:

以上是关于如何使用相同的电子邮件地址保存自己的个人资料?的主要内容,如果未能解决你的问题,请参考以下文章

邮箱地址怎么写

如何使用相同的电子邮件地址创建一个新的 GitHub 帐户?

如何使用 NSURLSession 保存 Facebook 个人资料图片?

如何使用 Python 验证电子邮件地址

如何使用 Python 验证电子邮件地址

如何将相同的回复邮件(模板保存在outlook中)发送给邮件发件人(to,cc)?