Laravel 4 - 无法在种子或迁移类中捕获数据库异常

ele*_*rik 4 php try-catch laravel-4

Laravel 4与MySql db.出于某种原因,我无法在种子或迁移类中捕获数据库异常(Illuminate\Database\QueryException):代码永远不会进入catch块.

例如,如果我尝试在"name"列为UNIQUE的表上插入:

try {
    $data = array('id' => 1, 'name' => 'foo');
    DB::table('table')->insert($data);
}
catch (\Exception $e) {
    $this->command->error("SQL Error: " . $e->getMessage() . "\n");
}
Run Code Online (Sandbox Code Playgroud)

...我总是得到这个错误:

PHP Warning: Uncaught exception 'Illuminate\Database\QueryException' with message 'SQLSTATE[23000]: Integrity constraint violation: 1062 Duplicate entry
Run Code Online (Sandbox Code Playgroud)
  • 我试图捕获异常,\ Exception,\ PDOException,\ Illuminate\Database\QueryException等等,但我没有运气.
  • 我可以捕获其他类型的异常(例如,除以零等)
  • 我可以在routes.php中捕获QueryException,相同的代码运行良好:代码进入'catch',我收到消息"SQL Error:etc." 但没有提出警告(正确)

任何的想法?谢谢你的帮助.

Blu*_*nie 7

你必须捕获"Illuminate\Database\QueryException"

try {
    $data = array('id' => 1, 'name' => 'foo');
    DB::table('table')->insert($data);
}
catch (\Illuminate\Database\QueryException $e) {
    $this->command->error("SQL Error: " . $e->getMessage() . "\n");
}
Run Code Online (Sandbox Code Playgroud)