我是laravel5的新手,这段代码无法捕获所有异常。 我不知道出了什么问题,请帮助。
public function delete($id)
{
$sql = $this->deleteSql();
DB::beginTransaction();
try {
$deleteData = Db::delete($sql, ['id' => $id]);
if (!$deleteData) {
return false;
}
return true;
} catch (\Exception $e) {
DB::rollback();
return $e->getMessage();
}
DB::commit();
}
它会给我:
Illuminate \ Database \ QueryException:SQLSTATE [22P02]: 和 引起的 PDOException:SQLSTATE [22P02]:
答案 0 :(得分:-1)
您的方法根本不会catch
阻止,因为它从bool
块返回try
。
此外,我不知道是什么让你使用try...catch
阻止。
我更多错误:
Db::delete($sql, ['id' => $id]);
如果您已定义Db
,那就没关系。但如果没有,则会引发错误。
除非您使用任何PHP测试工具(如phpUnit / phpSpec等)测试您的应用程序,否则无需使用事务。
<强>解决方案:强>
根本不需要使用try..catch
块。
只需在您要删除的模型上调用delete方法,就可以完成,如下所示:
public function delete($id)
{
YourModel::delete($id); // Replace YourModel with the model you wish to delete
\Session::flash('delete_message', 'Model has been successfully deleted.');
return redirect()->back(); // or anywhere else of your choice
}
希望这会帮助你。快乐的编码。欢呼声。