Php 如何处理Laravel中重复条目的QueryException
以下是我试图处理重复条目的模型代码: 调用控制器代码如下:$userModel->addUser$userData 这里我不想打印从model收到的任何响应 将错误获取为: 我做错了什么?如何正确处理异常,最好的做法是什么 您应该尝试以下方法: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
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