我看到很多人用这种方式来检查一个懒熊模型是否得到保存.所以现在我想知道是否是一个安全的方式.
还可以检查下面的查询是否像这样执行
检查型号是否得到保存
例如:
$myModel = new User(); $myModel->firstname = Input::get('firstname'); $myModel->lastname = Input::get('lastname'); $myModel->save(); //Check if user got saved if ( ! $myModel->save()) { App::abort(500,'Error'); } //User got saved show OK message return Response::json(array('success' => true,'user_added' => 1),200);
当我的模型得到保存时,以上是一个安全的方法吗?
检查查询是否返回结果
例如:
$UserProduct = Product::where('seller_id','=',$userId)->first(); if (! $UserProduct) { App::abort(401); //Error }
如果没有产品找到,以上是否返回错误?
检查查询是否已执行
例如:
$newUser = User::create([ 'username' => Input::get('username'),'email' => Input::get('email') ]); //Check if user was created if ( ! $newUser) { App::abort(500,'Some Error'); } //User was created show OK message return Response::json(array('success' => true,'user_created' => 1),200);
以上检查用户是否创建?
检查型号是否得到保存
save()将返回一个布尔值,保存或不保存.所以你可以做:
$saved = $myModel->save(); if(!$saved){ App::abort(500,'Error'); }
或直接保存在if:
if(!$myModel->save()){ App::abort(500,'Error'); }
请注意,在您的示例中,在一行中调用save()两次是没有意义的.顺便说一下,许多错误或问题会阻止模型被保存,这将会抛出异常.
检查查询是否返回结果
当没有记录被发现时,first()将返回null,以便您的检查工作找到.但是,作为替代方案,您还可以使用firstOrFail(),当没有找到任何内容时,它将自动抛出ModelNotFoundException:
$UserProduct = Product::where('seller_id',$userId)->firstOrFail();
(对find()和findOrFail()也是如此)
检查查询是否已执行
不幸的是,创建它并不那么容易.来源:
public static function create(array $attributes) { $model = new static($attributes); $model->save(); return $model; }
您可以看到它将使用$attributes创建一个新的模型实例,然后调用save().现在如果save()返回true,你不会知道,因为你会得到一个模型实例.例如,您可以检查模型ID(因为只有在保存记录并返回新创建的id之后才可用)
if(!$newUser->id){ App::abort(500,'Some Error'); }