【问题标题】:try catch event doesn't show error in laravel query buildertry catch 事件在 laravel 查询生成器中不显示错误
【发布时间】:2015-02-27 17:03:39
【问题描述】:

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

【问题讨论】:

  • 我不认为在 SQL 中有 WHERE id = "" 是错误的。 ;)
  • 没错。您可以传递一个空字符串。

标签: php laravel-4 try-catch


【解决方案1】:

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

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

【讨论】:

    猜你喜欢
    • 2019-02-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-04-18
    • 2021-02-13
    • 1970-01-01
    • 2015-04-06
    相关资源
    最近更新 更多