gpt4 book ai didi

php - laravel try/catch 不适用于失败的查询

转载 作者:可可西里 更新时间:2023-11-01 00:12:34 28 4
gpt4 key购买 nike

我有一个 INSERT 查询可能会由于数据库中的某些唯一键而失败所以我使用 try/catch 来避免错误...顺便说一句 form_id 是唯一的

    try {

$reward = new UserCreditForm();
$reward->user_id = $form->user_id ;
$reward->form_id = $form->id ;
$reward->amount = $amount ;
$reward->result = $result ;
$reward->save();
$form->result = $result ;
$form->save();

}
catch ( Exception $e )
{
$form->error_flag = 6 ;
$form->save();
}

但是当 uniqu 键失败时 try/catch 不起作用,我得到了

Whoops, looks like something went wrong.
(2/2) QueryException

SQLSTATE[23000]: Integrity constraint violation: 1062 Duplicate entry '1' for key 'user_credit_forms_form_id_unique' (SQL: insert into `user_credit_forms` (`user_id`, `form_id`, `amount`, `result`, `updated_at`, `created_at`) values (2, 1, 499392, 1, 2017-08-31 14:45:06, 2017-08-31 14:45:06))

如果查询失败,有没有办法避免错误并跳到捕获部分?

最佳答案

您应该使用 catch (\Exception $e ) 来捕获 try 中的所有异常。

最终形式应该是这样的:

try {

$reward = new UserCreditForm();
$reward->user_id = $form->user_id ;
$reward->form_id = $form->id ;
$reward->amount = $amount ;
$reward->result = $result ;
$reward->save();
$form->result = $result ;
$form->save();

}
catch ( \Exception $e )
{
$form->error_flag = 6 ;
$form->save();
}

关于php - laravel try/catch 不适用于失败的查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45979024/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com