try-catch事件不';t在laravel查询生成器中显示错误


try catch event doesn't show error in laravel query builder

这是我的代码,您可以在其中看到删除命令的where条件为空

     try{
            DB::table('t_users')->where('id', '=', '')->delete();
        } catch (Exception $e){
            return Functions::createErrorResponse(400, 'E200', $e->getCode() . ' - ' . $e->getMessage());
        }

但这里没有显示任何错误。,如果我使某些错误的表名,则它会将错误显示为..

{
    "error": {
        "code": 400,
        "type": "E200",
        "message": "42S02 - SQLSTATE[42S02]: Base table or view not found: 1146 Table 'globalops.t_charts' doesn't exist (SQL: delete from `t_charts` where `id` = )"
    }
}

这很好,

有人能告诉我为什么即使我把代码放在try-catch事件中,它也不会显示任何错误吗。我该做点别的吗。。?

即使没有匹配的行(正在删除),DELETE语句也不会抛出错误。但是,delete()将返回受影响行的计数。我想你想做这样的事情:

$affected = DB::table('t_users')->where('id', '=', '')->delete();
if($affected == 0){
    return Functions::createErrorResponse(400, 'E200', 'User not found');
}