如何使用相同的电子邮件地址保存自己的个人资料?
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 帐户?