关于我之前提出的问题,我还有一个问题:
我正在执行插入查询,我想知道它是否成功。
我尝试过以下方法:
$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();
我修改上面代码的部分内容以使其失败,例如。更改模型名称或数据库字段。但这只会导致代码输出查询异常。
如何检查此查询是否失败,是否需要尝试/捕获?还是有更好的方法?
答案 0 :(得分:0)
您需要使用try / catch块:
try
{
$user->save();
}
catch(Exception $e)
{
// Your code when query fails.
}
当您的应用为公众做好准备时,请不要忘记打开文件app/config/app.php
并将debug
从true
更改为false
。这将阻止您的应用在您没有尝试/捕获阻止的情况下输出查询异常。
答案 1 :(得分:0)
save
返回布尔值,所以简单地说:
if ($model->save()) // YAY success!
else // unexpected, but no errrors
当然如果有任何错误,这会导致db查询或php代码失败,那么你会看到异常。
例如,当您挂钩else
事件并停止时,可能会发生saving
:
// User model
public static function boot()
{
static::saving(function ($user) {
// Not a girl? You shall NOT PASS! ;)
if ($model->gender != 'female') return false;
});
}
答案 2 :(得分:0)
使用Try / Catch可能成为最佳解决方案之一。 例如:
public function InsertDummies($data1,$data2,$data3){
try{
//your query
return 'Success to Insert';
}
catch(Exception $e){
return 'Failed to Insert';
}
}
祝你好运!