雄辩 ORM delete()方法

你好,我正在研究幼虫。 我使用雄辩的 ORM 删除方法,但我得到一个不同的结果。不是真或假,但空。 我设置了一个资源路由,在 UsersController 中有一个销毁方法。

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”: “ false”} ,数据库中的记录被删除。

然后我使用 dd ($res) ,它在页面中显示 null。

但是从课程中我了解到它返回一个布尔值 true 或 false。

我的代码有错误吗?

你能告诉我一些其他的方法,我可以得到一个布尔结果时,我删除数据库中的数据?

243436 次浏览

我认为你可以改变你的问题,并尝试这样:

$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 提供返回 boolean值的 destroy()函数。因此,如果在数据库中记录 存在删除,那么就会得到 true,否则就会得到 false

下面是一个使用 Laravel 叮当贝壳的示例。

delete operation result

在这种情况下,您的代码应该如下所示:

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

更多关于 Laravel 雄辩删除模型的信息

$model=User::where('id',$id)->delete();

delete之前,幼虫期有几种方法。

User::find(1)User::first()返回一个实例。

User::where('id',1)->getUser::all()返回实例的集合。

对模型实例调用 delete返回 true/false

$user=User::find(1);
$user->delete(); //returns true/false

对一个实例集合调用 delete将返回一个表示已删除记录数的数字

//assume you have 10 users, id from 1 to 10;
$result=User::where('id','<',11)->delete(); //returns 11 (the number of the records 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 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 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
}

您可以使用两种方式删除数据。 首先,使用 找到 第二,对模型使用 哪里 你可以试试这个。 第一:

User::find($id)->destroy();

或者第二条路

User::where('id', $id)->delete();

现在请尝试它将返回您真/假的结果。