Laravel 我的问题插入了吗?
关于我之前提出的一个问题,我还有一个问题: 我正在执行一个insert查询,我想知道它是否成功 我尝试了以下方法: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->
$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以检查发生了什么,如唯一索引约束失败等。