laravel Eloquent ORM delete() 方法

新手上路,请多包涵

嗨,我正在学习 laravel。我使用 Eloquent ORM 删除方法,但得到不同的结果。不是真或假,而是空。我设置了一个资源路由,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 。

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

我的代码有错误吗?

你能告诉我一些其他方法,当我从数据库中删除数据时,我可以获得布尔结果吗?

原文由 Evol Rof 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 584
2 个回答

delete 之前,laravel 中有几种方法。

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

One more thing ,if you are new to laravel ,you can use php artisan tinker to see the result, which is more efficient and then dd($result) , print_r($result);

原文由 Evol Rof 发布,翻译遵循 CC BY-SA 4.0 许可协议

您可以使用两种方式删除数据。首先,使用 find 第二,使用 where 和 model 你可以尝试这样的事情。第一的:

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

或第二种方式

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

现在请尝试它会返回真/假结果。

原文由 M Umer Yasin 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题