如何在 laravel 中更新时验证电子邮件
Posted
技术标签:
【中文标题】如何在 laravel 中更新时验证电子邮件【英文标题】:How to validate email while updating in laravel 【发布时间】:2022-01-11 19:31:54 【问题描述】:我有 2 个名为 area_managers
和 shopkeepers
的表。我想从area_managers
到validate email
,同时以一种与shopkeepers
和area_managers
表的电子邮件不匹配的方式进行更新。我尝试了以下方式,但它甚至不允许相应用户的现有电子邮件。
public function update(Request $request, AreaManager $areaManager)
$request->validate([
'email'=>'required|email|unique:shopkeepers,email|unique:area_managers,email,'.$areaManager->id,
]);
$areaManager-> email = $request->email;
$areaManager->update();
return redirect()->route('area_manager.edit',$areaManager->id);
【问题讨论】:
Welcome to SO ...您必须从唯一规则中忽略当前用户的记录,文档解释了如何为该规则执行此操作 所以你需要在更新时验证唯一性吗? ManojKiran,是的。更新时验证 2 个表的唯一性。 这看起来应该可以工作。$areaManager
是什么?包括所有相关代码,并显示此代码的位置。我假设的控制器方法?
【参考方案1】:
你应该使用这个命令创建一个角色:
php artisan make:rule 角色名
然后在 pass 方法中设置您的查询,然后在验证器中使用
【讨论】:
【参考方案2】:快速检查可能是这样的:
$checkAreaManagers = DB::table('area_managers')->where('email', '=', $request->email)->first();
$checkShopkeepers = DB::table('shopkeepers')->where('email', '=', $request->email)->first();
if ($checkAreaManagers === null || $checkShopkeepers === null)
// Proceed with the update
$areaManager->email = $request->email;
$areaManager->save();
if ($checkAreaManagers !== null || $checkShopkeepers !== null)
// Cancel the update (Your logic here)
dd('Duplicate found');
【讨论】:
以上是关于如何在 laravel 中更新时验证电子邮件的主要内容,如果未能解决你的问题,请参考以下文章