Laravel 验证:软删除 + 唯一电子邮件 + 更新
Laravel Validation: soft delete + unique email + update
我正在尝试设置客户注册检查和个人资料编辑。
- 我正在使用软删除
- 电子邮件必须是唯一的(当然不包括删除的)
- 如果编辑个人资料(存在 ID),则必须忽略该字段电子邮件
到目前为止我有
'email' => [
'required',
'email',
'unique:clients,email,NULL,deleted_at,deleted_at,NULL',
],
现在它可以正常工作并检测到未删除的唯一电子邮件,但是当我需要从客户端编辑配置文件时它会给我错误。我尝试添加额外的独特设置,但它们似乎被忽略了:
'email' => [
'required',
'email',
'unique:clients,email,NULL,deleted_at,deleted_at,NULL',
Rule::unique('clients')->ignore('id', (int)$request->input('id')) // <- from Laravel docs, but is not working
],
我找到的解决方案只满足其中一项要求,但我似乎无法将它们结合起来。
编辑:修复是
'email'=>['required','email',Rule::unique('clients','email')->ignore($request->input('id'))->whereNull('deleted_at')],
试试这个
$this->validate($request,[
'email'=>['required','email',Rule::unique('clients','email')->ignore($id)->whereNull('deleted_at')]
]);
我正在尝试设置客户注册检查和个人资料编辑。
- 我正在使用软删除
- 电子邮件必须是唯一的(当然不包括删除的)
- 如果编辑个人资料(存在 ID),则必须忽略该字段电子邮件
到目前为止我有
'email' => [
'required',
'email',
'unique:clients,email,NULL,deleted_at,deleted_at,NULL',
],
现在它可以正常工作并检测到未删除的唯一电子邮件,但是当我需要从客户端编辑配置文件时它会给我错误。我尝试添加额外的独特设置,但它们似乎被忽略了:
'email' => [
'required',
'email',
'unique:clients,email,NULL,deleted_at,deleted_at,NULL',
Rule::unique('clients')->ignore('id', (int)$request->input('id')) // <- from Laravel docs, but is not working
],
我找到的解决方案只满足其中一项要求,但我似乎无法将它们结合起来。
编辑:修复是
'email'=>['required','email',Rule::unique('clients','email')->ignore($request->input('id'))->whereNull('deleted_at')],
试试这个
$this->validate($request,[
'email'=>['required','email',Rule::unique('clients','email')->ignore($id)->whereNull('deleted_at')]
]);