Lumen "PUT" 请求未更新

Lumen "PUT" request doesn't update

我有下面的代码片段来更新 MySQL table。我正在使用 POSTMAN PUT 请求测试我的 back-end。此代码似乎没有正确更新 MySQL,而是将 MySQL 单元格设置为空值,即使我在 POSTMAN 结果中得到 "Updated Successfully"。

下面是LumenPHP代码

public function updateSensorPackage(Request $request, $id){
   $sensorPackage = AddSensorPackage:: find($id);
   $sensorPackage -> elderly_id = $request ->  input('elderly_id');
   $sensorPackage -> centre_id = $request -> input('centre_id'); 
   $sensorPackage -> package_id = $request -> input('package_id'); 
   $sensorPackage -> beacon_id = $request ->  input('beacon_id');
   $sensorPackage -> created_by = $request -> input('created_by'); 
   $sensorPackage -> save();
   return response('Updated Successfully', 200);

}

我将 POSTMAN header 设置为 "Content-type : Application/json" 并在请求 body 中发送参数。下面我粘贴了 POSTMAN "PUT" 请求。

在运行 dd($request->all());之后我得到了下面的结果

我的PHP版本是7+,Lumen版本是5.5.2

您应该尝试发送 POST 请求而不是 PUT,然后在请求中添加一个类似这样的新参数。

_method = "PUT"

我不记得是在哪里找到的,但它与底层的 symfony 请求有关 class。

编辑:找到了。

也可以设置Postman使用'x-www-url-formurlencoded'发送请求参数

https://laravel.io/forum/02-13-2014-i-can-not-get-inputs-from-a-putpatch-request

把你的参数写在

x-www-form-urlencode 

看到了魔法,它起作用了fine.The原因是laravel只是创建了一种 PUT 请求的感觉,它不能以表单数据或原始数据的形式给出

取消链接get方法你需要定义header

Accept: 'application/json'
'Content-Type': 'application/json'