加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

php – 检查laravel模型是否被保存或查询执行

发布时间:2020-12-14 19:55:30 所属栏目:大数据 来源:网络整理
导读:我看到很多人用这种方式来检查一个懒熊模型是否得到保存.所以现在我想知道是否是一个安全的方式. 还可以检查下面的查询是否像这样执行 检查型号是否得到保存 例如: $myModel = new User();$myModel-firstname = Input::get('firstname');$myModel-lastname
我看到很多人用这种方式来检查一个懒熊模型是否得到保存.所以现在我想知道是否是一个安全的方式.

还可以检查下面的查询是否像这样执行

检查型号是否得到保存

例如:

$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');
}

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读