当前位置: 首页 > 面试题库 >

检查laravel模型是否已保存或查询已执行

纪畅
2023-03-14
问题内容

我已经看到很多人使用这种方法来检查laravel模型是否已保存。所以现在我想知道这是否是一种安全的方法。

而且我还可以检查以下查询是否已执行

检查模型是否保存

例如:

$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()

检查查询是否执行

不幸的是,create这并不容易。来源:

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


 类似资料:
  • 问题内容: 我有一个口才的模型,其中有一个相关的模型: 创建模型时,它不一定具有相关的模型。更新时,可能会添加一个选项,也可能不会添加。 因此,我需要检查相关模型是否存在,以分别对其进行更新或创建: 我要查找的代码在哪里。 问题答案: 在 php 7.2+中, 您不能在关系对象上使用,因此对于所有关系都没有一种万能的方法。使用查询方法代替@tremby,如下所示: 适用于所有关系类型的通用解决方案

  • 我需要验证表中是否已经存在列。我的类扩展了CustomTaskChange,因此我的方法接收一个数据库对象作为参数。我可以通过ResultSetObject进行我想要的验证吗?

  • 问题内容: 在我的模型中,我有: 第一次修改效果很好。 有人修改别名上的时,如何获取新图像?其次,是否有更好的方法来缓存远程映像? 问题答案: 本质上,你想覆盖方法,以便保留原始值的副本。这样一来,你就不必进行其他数据库查找(这总是一件好事)。

  • 问题内容: 我具有以下数据库结构: 在我的项目永久链接页面上,我有一个“添加到收藏夹”按钮,可在其中插入新行 如果用户已经在收藏夹中将其替换为“从收藏夹中删除”按钮,我希望能够将其替换。 我无法弄清楚其背后的逻辑-是否需要检查其中是否存在具有当前用户ID和永久链接ID的行?这对我不起作用: 问题答案: 您可能想要这样的东西:

  • 如果文档ID不存在,我想将数据添加到firestore数据库中。到目前为止,我一直在尝试: 目标是检查数据库中的所有文档ID,并查看与“varuId”变量的任何匹配。如果匹配,则不会创建文档。如果不匹配,它应该创建一个新文档

  • 问题内容: 我想知道是否有一种方法可以检查Redis列表中是否已存在密钥? 我不能使用集合,因为我不想强制唯一性,但是我确实希望能够检查字符串是否确实存在。 问题答案: 您的选择如下: 如果发现并使用并替换它。 与您的个人保持独立 循环浏览直到找到项目或到达末尾。 Redis列表是作为http://en.wikipedia.org/wiki/Linked_list实现的,因此存在局限性。 我认为您