use*_*667 27 php mysql validation model laravel
我见过很多人用这种方式来检查一个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);
Run Code Online (Sandbox Code Playgroud)
以上是一种安全的方式来检查我的模型何时保存?
检查查询是否返回结果
例如:
$UserProduct = Product::where('seller_id', '=', $userId)->first();
if (! $UserProduct)
{
App::abort(401); //Error
}
Run Code Online (Sandbox Code Playgroud)
如果找不到产品,上面是否会返回错误?
检查查询是否已执行
例如:
$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);
Run Code Online (Sandbox Code Playgroud)
以上是否检查用户是否已创建?
luk*_*ter 50
save()
会返回一个布尔值,保存或不保存.所以你可以这样做:
$saved = $myModel->save();
if(!$saved){
App::abort(500, 'Error');
}
Run Code Online (Sandbox Code Playgroud)
或直接保存在if:
if(!$myModel->save()){
App::abort(500, 'Error');
}
Run Code Online (Sandbox Code Playgroud)
请注意,save()
在您的示例中连续调用两次没有意义.顺便说一句,许多错误或问题会阻止模型被保存,无论如何都会引发异常......
first()
null
当没有找到记录时将返回,以便您的检查工作找到.但是作为替代方案,您也可以使用firstOrFail()
哪个会ModelNotFoundException
在找不到任何内容时自动抛出:
$UserProduct = Product::where('seller_id', '=', $userId)->firstOrFail();
Run Code Online (Sandbox Code Playgroud)
(对于find()
和findOrFail()
)也是如此
不幸的是,create
它并不那么容易.这是来源:
public static function create(array $attributes)
{
$model = new static($attributes);
$model->save();
return $model;
}
Run Code Online (Sandbox Code Playgroud)
如您所见,它将使用$attributes
然后调用创建模型的新实例save()
.现在,如果save()
返回true,你就不会知道,因为你无论如何都会得到一个模型实例.例如,您可以检查模型ID(因为只有在保存记录并返回新创建的ID后才可用)
if(!$newUser->id){
App::abort(500, 'Some Error');
}
Run Code Online (Sandbox Code Playgroud)
Sim*_*mon 10
您还可以检查模型上的public
属性$exists
.
if ($myModel->exists) {
// Model exists in the database
}
Run Code Online (Sandbox Code Playgroud)
当我使用Model::create
method 时,我会这样做:
$activity = Activity::create($data);
if ($activity->exists) {
// success
} else {
// failure
}
Run Code Online (Sandbox Code Playgroud)
至于Save方法,则更容易,因为$model->save()
return Bool
:
$category = new Category();
$category->category_name = $request->category_name;
$is_saved = $category->save();
if ($is_saved) {
// success
} else {
// failure
}
Run Code Online (Sandbox Code Playgroud)