【问题标题】:How to know if a query fails in Laravel 4?如何知道 Laravel 4 中的查询是否失败?
【发布时间】:2025-12-29 10:55:06
【问题描述】:

我在 MySQL 中使用 Laravel 4,我想知道在数据库中插入、更新或删除记录时如何控制可能出现的错误。例如,如果我进行如下更新:

DB::table('user')->where('id', $id)->update($userdata);

我怎么知道查询是否失败?我想过使用 try-catch 块来捕获异常并处理它,但我想知道是否存在 Laravel 特定的方法。

【问题讨论】:

  • 当查询失败时会抛出 PDOException。你可以抓住它。
  • @RubensMariuzzo,不是真的。 Laravel overrides it 并抛出一个普通的 Exception 代替。
  • @Raphael_,你说得对,谢谢指正。

标签: php mysql laravel try-catch


【解决方案1】:

把它放在一个 try catch 块中。

try {

    DB::table('user')->where('id', $id)->update($userdata);
}catch(\Exception $e){
    //Do something when query fails. 
}

此外,

DB::insert() 返回布尔值。

DB::update() 返回布尔值

DB::delete() 返回布尔值

DB::insertGetId() 返回最后插入的 id。

您可以根据值编写后续代码。

P.S.以上内容并非针对错误,只是为了了解您的查询是否影响某些行。

【讨论】:

  • 谢谢!是的,我想使用 try-catch 但我想确定 Laravel 是否提供了直接方法。如果该方法返回一个关于行是否受到影响的布尔值,这对我来说就足够了。
  • return falsecatch 块中。这就是我使它成为布尔值的方式;)
  • 我们可以像@Rubens 在问题中评论的那样捕获 PDOException 吗?
  • @sangam \Exception $e 是 PDOException。
  • 它的工作原理是这样的,但仅在添加“/”正斜杠时。为什么它只适用于“异常”前面的正斜杠?