我试图忽略给定ID的唯一角色,但我不断收到以下错误:
SQLSTATE [23000]:完整性约束违规:1062重复条目 ' user@updated.com'对于关键' users_email_unique' (SQL:update
users
设置name
=姓名,updated_at
= 2018-04-06 10:01:27id
= 1)
在我的UserUpdateRequest
课程中,我设置了规则:
public function rules()
{
return [
'email' => 'required|email|unique:users,email,' . $this->route()->parameter('user'),
'name' => 'required',
];
}
$this->route()->parameter('user')
获取当前的型号ID。
我不确定我的规则在哪里做错了,有人有什么想法吗?
以下是我调用更新的地方:
public function update(Requests\UserUpdateRequest $request, $id)
{
$result = $this->service->update($request->except(['_token', '_method']));
if ($result) {
return back()->with('message', 'Successfully updated');
}
return back()->with('message', 'Failed to update');
}
DB:
答案 0 :(得分:3)
出现错误的原因是您尝试在数据库中保存重复条目。您可以在索引中看到所有电子邮件都必须是唯一的。 如果您尝试将记录更改为其他人已使用的电子邮件地址,则会收到完整性约束错误消息。
答案 1 :(得分:0)
问题是我没有将用户的ID传递给该函数,因此它更新了当前登录用户的记录,因此它将触发唯一规则。您可以在查询中看到它正在执行WHERE id =1
,因为它正在使用Auth::id();
进行更新。
答案 2 :(得分:-1)
这是一个SQL错误,你对sql表有一个唯一的约束。可能在您进行迁移时添加了table->string("email")->unique()