我已经看到很多人使用这种方法来检查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实现的,因此存在局限性。 我认为您