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

标签 php mysql validation laravel model

我见过很多人使用这种方式来检查 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() 将返回一个 bool 值,已保存或 已保存。所以你可以这样做:

$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 - 检查 laravel 模型是否已保存或查询是否已执行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27877948/

相关文章:

matlab - inputParser 验证参数未按预期运行

php - 检查命令是否正在多用户 php 进程中运行

php - 将域重定向到不同的 .php 文件

php - MySQL SELECT 语句只返回一行

mysql - JPA/Hibernate 连接表/连接列 ID 未标记为外键?

Mysql,创建外键失败

mysql - Symfony2错误: Unknown database

.net - 企业库配置和 .NET 4.0

javascript - parsley.js - 日期字段的自定义验证

php - Symfony/api-平台 PATCH NotEncodableValueException : "Syntax error"