Laravel - 如何捕获数据库异常?代码500

时间:2014-04-03 19:31:17

标签: php exception-handling laravel

我用laravel创建了一个注册表单。数据库中的电子邮件列被归类为UNIQUE。如果我使用电子邮件地址注册了一个用户,并且想要第二次发送表单,我想捕获此异常并向用户显示错误消息。

但是目前唯一可以识别的是代码500回复给我,我没有机会捕获该异常以显示更加用户友好的消息。

我的代码如下,我的问题是如何检测到$user->save没有发生,应用程序不应该回复代码500.

 //Storing the data to the database 
    try {
        $user = new User;
        $user->name = Input::get('name');
    $user->surname = Input::get('sname');
        $user->email = Input::get('email');
        $user->activatehash = str_random(25);
        $user->ip = Request::getClientIp();
        $status = $user->save();
    } catch(\Exception $e) {
        //Do something when query fails. 
        return View::make("register", array('error' => 'true'))->withInput(Input::all());
    }   

有什么想法吗? 谢谢!

1 个答案:

答案 0 :(得分:0)

你应该看看Ardent。然后,您可以定义规则以确保在保存之前您的电子邮件是唯一的:

public static $rules = array(
    'email' => array('required', 'unique', 'email')
);