laravel Eloquent ORM delete() 方法
laravel Eloquent ORM delete() method
嗨,我正在学习laravel。
我使用 Eloquent ORM delete 方法,但我得到了不同的 result.Not true 或 false 但为 null。
我设置了一个资源路由,在UsersController中有一个destroy方法。
public function destroy($id){
$res=User::find($id)->delete();
if ($res){
$data=[
'status'=>'1',
'msg'=>'success'
];
}else{
$data=[
'status'=>'0',
'msg'=>'fail'
];
return response()->json($data);
但我总是得到响应{"status":"0","msg":"failed"},数据库中的记录被删除了。
然后我使用 dd($res) 。它在页面中显示 null。
但是我从课程中学到了它 returns 一个布尔值 true 或 false。
我的代码有没有错误?
你能告诉我一些其他方法,当我从数据库中删除数据时可以获得布尔结果吗?
我认为您可以更改您的查询并试一试:
$res=User::where('id',$id)->delete();
起初,
您应该知道 destroy()
是通过对象或模型直接删除实体的正确方法,delete()
只能在查询生成器中调用。
在你的情况下,你没有检查记录是否存在于数据库中。记录只有存在才能删除。
所以,你可以像下面那样做。
$user = User::find($id);
if($user){
$destroy = User::destroy(2);
}
上面的值或 $destroy
将分别在失败或成功时为 0 或 1。因此,您可以像这样更改 $data
数组:
if ($destroy){
$data=[
'status'=>'1',
'msg'=>'success'
];
}else{
$data=[
'status'=>'0',
'msg'=>'fail'
];
}
希望,你明白了。
Laravel Eloquent 提供 destroy()
函数,其中 returns boolean
值。因此,如果数据库中的记录 存在 并且 已删除 您将得到 true
否则 false
.
这是一个使用 Laravel Tinker shell.
的示例
在这种情况下,您的代码应如下所示:
public function destroy($id)
{
$res = User::destroy($id);
if ($res) {
return response()->json([
'status' => 1,
'msg' => 'success'
]);
} else {
return response()->json([
'status' => 0,
'msg' => 'fail'
]);
}
}
的更多信息
$model=User::where('id',$id)->delete();
在delete
之前,laravel.
中有几种方法
User::find(1)
和 User::first()
return 实例。
User::where('id',1)->get
和User::all()
return实例集合。
在模型实例上调用 delete
将 returns true/false
$user=User::find(1);
$user->delete(); //returns true/false
对实例集合调用 delete
将 returns 一个表示已删除记录数的数字
//assume you have 10 users, id from 1 to 10;
$result=User::where('id','<',11)->delete(); //returns 11 (the number of the records had been deleted)
//lets call delete again
$result2=User::where('id','<',11)->delete(); //returns 0 (we have already delete the id<11 users, so this time we delete nothing, the result should be the number of the records had been deleted(0) )
还有其他删除方法,您可以像下面这样调用destroy
作为模型静态方法
$result=User::destroy(1,2,3);
$result=User::destroy([1,2,3]);
$result=User::destroy(collect([1, 2, 3]));
//these 3 statement do the same thing, delete id =1,2,3 users, returns the number of the records had been deleted
还有一点,如果你是laravel
的新手,你可以使用php artisan tinker
查看结果,效率更高然后dd($result)
,print_r($result);
删除用户前检查,否则抛出错误异常
$user=User::find($request->id);
if($user)
{
// return $user; <------------------------user exist
if($user->delete()){
return 'user deleted';
}
else{
return "something wrong";
}
}
else{
return "user not exist";// <--------------------user not exist
}
您可以通过两种方式删除数据。
首先,使用 find
其次,将 where 与模型一起使用
你可以尝试这样的事情。
第一:
User::find($id)->destroy();
或第二种方式
User::where('id', $id)->delete();
现在请试一试 return 你 True/False 结果。
嗨,我正在学习laravel。 我使用 Eloquent ORM delete 方法,但我得到了不同的 result.Not true 或 false 但为 null。 我设置了一个资源路由,在UsersController中有一个destroy方法。
public function destroy($id){
$res=User::find($id)->delete();
if ($res){
$data=[
'status'=>'1',
'msg'=>'success'
];
}else{
$data=[
'status'=>'0',
'msg'=>'fail'
];
return response()->json($data);
但我总是得到响应{"status":"0","msg":"failed"},数据库中的记录被删除了。
然后我使用 dd($res) 。它在页面中显示 null。
但是我从课程中学到了它 returns 一个布尔值 true 或 false。
我的代码有没有错误?
你能告诉我一些其他方法,当我从数据库中删除数据时可以获得布尔结果吗?
我认为您可以更改您的查询并试一试:
$res=User::where('id',$id)->delete();
起初,
您应该知道 destroy()
是通过对象或模型直接删除实体的正确方法,delete()
只能在查询生成器中调用。
在你的情况下,你没有检查记录是否存在于数据库中。记录只有存在才能删除。
所以,你可以像下面那样做。
$user = User::find($id);
if($user){
$destroy = User::destroy(2);
}
上面的值或 $destroy
将分别在失败或成功时为 0 或 1。因此,您可以像这样更改 $data
数组:
if ($destroy){
$data=[
'status'=>'1',
'msg'=>'success'
];
}else{
$data=[
'status'=>'0',
'msg'=>'fail'
];
}
希望,你明白了。
Laravel Eloquent 提供 destroy()
函数,其中 returns boolean
值。因此,如果数据库中的记录 存在 并且 已删除 您将得到 true
否则 false
.
这是一个使用 Laravel Tinker shell.
的示例在这种情况下,您的代码应如下所示:
public function destroy($id)
{
$res = User::destroy($id);
if ($res) {
return response()->json([
'status' => 1,
'msg' => 'success'
]);
} else {
return response()->json([
'status' => 0,
'msg' => 'fail'
]);
}
}
的更多信息
$model=User::where('id',$id)->delete();
在delete
之前,laravel.
User::find(1)
和 User::first()
return 实例。
User::where('id',1)->get
和User::all()
return实例集合。
在模型实例上调用 delete
将 returns true/false
$user=User::find(1);
$user->delete(); //returns true/false
对实例集合调用 delete
将 returns 一个表示已删除记录数的数字
//assume you have 10 users, id from 1 to 10;
$result=User::where('id','<',11)->delete(); //returns 11 (the number of the records had been deleted)
//lets call delete again
$result2=User::where('id','<',11)->delete(); //returns 0 (we have already delete the id<11 users, so this time we delete nothing, the result should be the number of the records had been deleted(0) )
还有其他删除方法,您可以像下面这样调用destroy
作为模型静态方法
$result=User::destroy(1,2,3);
$result=User::destroy([1,2,3]);
$result=User::destroy(collect([1, 2, 3]));
//these 3 statement do the same thing, delete id =1,2,3 users, returns the number of the records had been deleted
还有一点,如果你是laravel
的新手,你可以使用php artisan tinker
查看结果,效率更高然后dd($result)
,print_r($result);
删除用户前检查,否则抛出错误异常
$user=User::find($request->id);
if($user)
{
// return $user; <------------------------user exist
if($user->delete()){
return 'user deleted';
}
else{
return "something wrong";
}
}
else{
return "user not exist";// <--------------------user not exist
}
您可以通过两种方式删除数据。 首先,使用 find 其次,将 where 与模型一起使用 你可以尝试这样的事情。 第一:
User::find($id)->destroy();
或第二种方式
User::where('id', $id)->delete();
现在请试一试 return 你 True/False 结果。