首页 > 解决方案 > Laravel 验证表中的唯一值以放入错误函数(js)

问题描述

在验证循环中的值时遇到问题。我从循环中获取值“mobile_no”和“email”,以验证这些值是否存在于我的另一个表中,其中包含 mobile no 和 email 列。感谢您的任何帮助。

   $get_values = DB::table('users_preview')->get();
   foreach($get_values as $values){
   $email = $values->email;
   $mobile_no = $values->email;

   /* now I want to validate if values of email and mobile no exist in 
      user's table , this is my sample way to do it which is actually 
      wrong*/

  // it only shows one validations but i like to show every each validations 
     for rows 
     if (users_preview::where('mobile', '=', $mobile_no)->count() > 0) {
            return response()->json([
                'message' => 'mobile is already 
                  exist', 
                'errors' => $numbers,
                'status' => false
            ]);
     } 


     }

     //scripts are 
     <script> 

    if(data.status == false){
    //some codes 
    }
    </script>

标签: javascriptphplaravel

解决方案


首先,查询每个请求的所有行并不是一个好主意。试想一下,如果将来您的表中有数千行,您将达到最大执行时间,默认为 30 秒。其次,这不是有效的 PHP 代码 - 只需查看for rowsundefined variable即可$numbers。第三,return 语句结束脚本执行。如果您想获取所有现有值,您可能应该在循环之外返回。

接下来,最重要的是,您正在查询表中的所有记录users_preview- 然后您正在检查同一个表,假设users_preview与您的雄辩模型相同?

如果您尝试检查整个表中的重复项,请参阅 Stackoverflow 上的这个问题:在 SQL 表中查找重复值 在 Laravel 中,您可以使用users_preview::raw(" - MY STATEMENT - ")->get();例如执行原始语句。也users_preview::where('mobile', '=', $mobile_no)->count();可能是您的可能解决方案。希望有帮助。


推荐阅读