Laravel 我的问题插入了吗?

Laravel 我的问题插入了吗?,laravel,laravel-4,eloquent,Laravel,Laravel 4,Eloquent,关于我之前提出的一个问题,我还有一个问题: 我正在执行一个insert查询,我想知道它是否成功 我尝试了以下方法: $input = Input::all(); $user = User::firstOrNew(array('email' => $input['email'])); $user->name = $input['name']; $user->username = $input['username']; $user->

关于我之前提出的一个问题,我还有一个问题:

我正在执行一个insert查询,我想知道它是否成功

我尝试了以下方法:

    $input = Input::all();

    $user = User::firstOrNew(array('email' => $input['email']));
    $user->name = $input['name'];
    $user->username = $input['username'];
    $user->email = $input['email'];
    $user->password = Hash::make($input['password']);

    $user->save();

    if($user){
        var_dump('all good');
    }
    else
    {
        var_dump('fail!');
    }
    die();
我修改了上述代码的一部分,使其失败,例如更改模型名称或db字段。但这只会导致代码输出查询异常


如何检查此查询是否失败,是否需要执行try/catch或是否有更好的方法?

您需要使用try/catch块:

try
{
    $user->save();
}
catch(Exception $e)
{
    // Your code when query fails. 
}
当你的应用程序准备好公开时,不要忘记打开app/config/app.php文件,并将debug从true更改为false。这将防止应用程序在没有try/catch块的情况下输出查询异常。

save返回布尔值,因此:

if ($model->save()) // YAY success!
else // unexpected, but no errrors
当然,如果有任何错误导致db查询或php代码失败,那么您将看到异常

例如,当您钩住保存事件并停止它时,可能会发生else:

// User model
public static function boot()
{
  static::saving(function ($user) {

    // Not a girl? You shall NOT PASS! ;)
    if ($model->gender != 'female') return false;
  });
}

使用Try/Catch可能成为一个最佳解决方案。 例如:

public function InsertDummies($data1,$data2,$data3){
        try{
            //your query
            return 'Success to Insert';
        }
        catch(Exception $e){
            return 'Failed to Insert';
        }
}

祝你好运

谢谢,但这正是我在问题中遇到的问题,它不起作用,就像你说的,我会得到一个例外。我认为这是一个误解。成功代码根据业务插入行或不插入行,错误/错误代码引发异常。您可以捕获QueryException以检查发生了什么,如唯一索引约束失败等。