在laravel查询构建器中,try catch事件不显示错误

时间:2015-02-27 17:03:40

标签: php laravel-4 try-catch

这是我的代码,您可以在其中看到删除命令的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事件中也不会显示任何错误。 我应该做别的事吗??

1 个答案:

答案 0 :(得分:0)

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

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