PowerShell调用Laravel 11 PUT接口更新描述失败,仅存空值/Null
PowerShell发送PUT请求更新Laravel 11企业描述时内容为空的问题
使用PowerShell向Laravel 11后端发送PUT请求更新企业描述,权限验证正常(伪造令牌或其他用户会被正确拦截并提示无权限),但新的描述值从未存入数据库,仅会被更新为null或空字符串。
控制器代码
public function updateDescription(Request $request, $id) { \Log::info('Request body:', (array)$request->json()->all()); $company = Company::findOrFail($id); // 验证当前登录用户是否为企业管理员 if (Auth::user()->id !== $company->user_id) { return response()->json(['message' => '你没有权限编辑该描述。'], 403); } $company->description = $request->description; $company->save(); return response()->json(['message' => '描述更新成功。']); }
PowerShell请求及响应
PS C:\Users\DevZone> Invoke-WebRequest -Uri "http://localhost:8000/api/companies/1/description" -Method PUT -Headers @{ "Authorization" = "Bearer $token"; "Content-Type" = "application/json" } -Body $body StatusCode : 200 StatusDescription : OK Content : {"message":"描述更新成功。"} RawContent : HTTP/1.1 200 OK Host: localhost:8000 Connection: close Access-Control-Allow-Origin: http://localhost:3000 Access-Control-Allow-Credentials: true Cache-Control: no-cache, private Content-Type: ap... Forms : {} Headers : {[Host, localhost:8000], [Connection, close], [Access-Control-Allow-Origin, http://localhost:3000], [Access-Control-Allow-Credentials, true]...} Images : {} InputFields : {} Links : {} ParsedHtml : mshtml.HTMLDocumentClass RawContentLength : 58
路由配置(routes/api.php)
Route::middleware(['auth:sanctum'])->put('/companies/{id}/description', [CompanyController::class, 'updateDescription']);
已尝试的操作
$body = $descriptionObj | ConvertTo-Json
Laravel日志记录
[2024-09-20 01:26:18] local.INFO: Request body:
问题分析
Laravel日志显示请求体为空,说明PowerShell发送的JSON数据未被后端正确接收,导致$request->description取不到有效值,最终数据库字段被更新为null或空字符串。
解决方法
构造正确的请求对象
确保$descriptionObj包含目标字段:$descriptionObj = @{ description = "你的新企业描述内容" }生成标准JSON格式
使用-Depth参数确保JSON转换完整,避免默认层级限制导致的格式错误:$body = $descriptionObj | ConvertTo-Json -Depth 10验证请求体内容
发送请求前打印$body,确认输出为标准JSON:{ "description": "你的新企业描述内容" }控制器明确取值(可选)
直接从JSON请求体中取值,兼容不同请求类型:$company->description = $request->json('description');
内容的提问来源于stack exchange,提问作者KatiaSisHost
相关产品推荐
相关产品推荐

