【问题标题】:How to validate email while updating in laravel如何在 laravel 中更新时验证电子邮件
【发布时间】:2022-01-11 19:31:54
【问题描述】:

我有 2 个名为 area_managersshopkeepers 的表。我想从area_managersvalidate email,同时以一种与shopkeepersarea_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 是什么?包括所有相关代码,并显示此代码的位置。我假设的控制器方法?

标签: laravel validation


【解决方案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');
    
    }
    
    

    【讨论】:

      猜你喜欢
      • 2015-06-09
      • 2020-11-03
      • 2020-03-18
      • 1970-01-01
      • 2021-12-10
      • 1970-01-01
      • 2019-11-25
      • 2022-08-14
      • 1970-01-01
      相关资源
      最近更新 更多