Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/294.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如何处理Laravel中重复条目的QueryException_Php_Mysql_Laravel_Exception_Error Handling - Fatal编程技术网

Php 如何处理Laravel中重复条目的QueryException

Php 如何处理Laravel中重复条目的QueryException,php,mysql,laravel,exception,error-handling,Php,Mysql,Laravel,Exception,Error Handling,以下是我试图处理重复条目的模型代码: 调用控制器代码如下:$userModel->addUser$userData 这里我不想打印从model收到的任何响应 将错误获取为: 我做错了什么?如何正确处理异常,最好的做法是什么 您应该尝试以下方法: public function addUser($userData) { try { DB::table('users')->insert($userData); } catch (Illuminate\Database

以下是我试图处理重复条目的模型代码:

调用控制器代码如下:$userModel->addUser$userData

这里我不想打印从model收到的任何响应

将错误获取为:

我做错了什么?如何正确处理异常,最好的做法是什么

您应该尝试以下方法:

public function addUser($userData) 
{     
  try {
    DB::table('users')->insert($userData);
  } catch (Illuminate\Database\QueryException $e){
    $errorCode = $e->errorInfo[1];
    if($errorCode == 1062){
        return 'Duplicate Entry';
    }
  }
}
有关详细信息,请按此操作。

您应该尝试以下操作:

public function addUser($userData) 
{     
  try {
    DB::table('users')->insert($userData);
  } catch (Illuminate\Database\QueryException $e){
    $errorCode = $e->errorInfo[1];
    if($errorCode == 1062){
        return 'Duplicate Entry';
    }
  }
}

有关更多详细信息,请按此操作。

我很接近我的答案,这都是关于名称空间问题和错误显示问题:

Illumb\Database\QueryException$e应为: \照亮\数据库\查询异常$e


返回和抛出错误不起作用,但“dd”方法起作用。因此,这节省了我两次查询以识别重复项和插入的时间,我很高兴:

我非常接近我的答案,这都是关于名称空间问题和错误显示问题:

Illumb\Database\QueryException$e应为: \照亮\数据库\查询异常$e


返回和抛出错误不起作用,但“dd”方法起作用。因此,这节省了我两次查询以识别重复项和插入的时间,我很高兴:

如果您只想避免重复条目异常,而不必在try{}catch{}之间包装所有内容,您可以简单地使用Laravel的firstOrCreate方法,如下所示:

User::firstOrCreate([
    'email' => $request->email // unique field here
], $userData);

使用此方法假定您正在用户模型上调用protected$guarded=[]。

如果您只想避免重复条目异常,而不必在try{}catch{}之间包装所有内容,您只需使用Laravel的firstOrCreate方法,如下所示:

User::firstOrCreate([
    'email' => $request->email // unique field here
], $userData);

使用此方法假定您正在用户模型上调用受保护的$guarded=[]。

公共函数规则{

    return [
                    
        'tool_id' => ['required','integer','unique:assign_toolto_joborders'],
        'joborder_id' => ['required','integer'],
        'assign_date' => ['required','date_format:d-m-Y'],
        'tool_qty' => ['required','integer']
        
    ];
}

公共职能规则{

    return [
                    
        'tool_id' => ['required','integer','unique:assign_toolto_joborders'],
        'joborder_id' => ['required','integer'],
        'assign_date' => ['required','date_format:d-m-Y'],
        'tool_qty' => ['required','integer']
        
    ];
}

我在这里发表评论之前看到了那篇文章,我写了类似的代码,你将如何通过抛出或返回语句返回消息,以及如何处理它?从控制器或模型本身?@Mithun让我检查一下我在这里发表评论之前看到了那篇文章,我写了类似的代码,你将如何通过抛出或返回语句返回消息t以及如何处理它?从控制器或模型本身?@Mithun让我检查一下,在插入之前验证信息。这部分很常见,有没有办法使用catch块处理重复的异常?是的,有办法处理,但我建议使用验证,如果很常见,则拆分使用相同函数的程序。以及对于每种情况,首先进行验证不管怎样,您的代码都是正确的,除了异常名称空间的事实……它应该是illumb\Database\queryexception尝试在插入信息之前验证信息。这一部分很常见,有没有一种方法可以使用catch块处理重复的异常?是的,有一些方法可以处理,但我建议使用validations,如果非常常见,请拆分使用相同函数的it程序。对于每种情况,请首先进行验证。不管您的代码是否正确,除了异常名称空间的事实……它应该是illumb\Database\QueryException