我的查询成功了吗?

时间:2014-08-11 13:37:50

标签: laravel eloquent

我在我的模型上执行各种操作,例如

User::destroy(Input::get('data'));

我需要测试上述操作是否成功,我该怎么做呢?

我试过了:

$deleted = User::destroy(Input::get('data'));

if (is_null($deleted) ) {
    App::abort(404);
}

但无济于事。

这里的推荐做法是什么?

2 个答案:

答案 0 :(得分:2)

如果您查看Illuminate\Database\Eloquent\Model destroy()方法,可以看到它返回已删除的记录数。

因此,最优雅的方式可能是:

$deleted = User::destroy(Input::get('data'));

if ( $deleted === 0 ) {
    App::abort(404);
}

但是,如果你不关心严格的比较,你可以选择:

if( ! User::destroy(Input::get('data') )
{
    App::abort(404);   
}

这是有效的,因为0在严格比较时评估为false。这也是该方法的评论所说的(1058-1060):

  

我们会在这里初始化一个计数,这样我们就会返回删除的总数   为了操作。然后开发人员可以将此数字检查为布尔值   输入值或获取为记录等删除的记录总数

我建议你坚持进行强有力的比较,因为返回类型更清晰,但你可以自由选择你想要的任何东西。

答案 1 :(得分:0)

你应该能够做到

if(User::destroy(Input::get('data')))
{

}

如果用户已被删除,则应返回true或false。

希望有所帮助。