我正在尝试更新一个用户。
这是我的模型:<?php
namespace AppModels;
use LaravelPassportHasApiTokens;
use IlluminateFoundationAuthUser as Authenticatable;
use IlluminateNotificationsNotifiable;
class User extends Authenticatable
{
use HasApiTokens, Notifiable;
protected $fillable = [
'name',
'email',
'password',
'user_type',
'username'
];
protected $hidden = [
'password',
'remember_token',
];
protected $casts = [
'email_verified_at' => 'datetime',
];
}
这里是更新控制器:
public function update(Request $request, User $user)
{
$user->update($request->all());
return response()->json($user, 200);
}
api.php:
Route::group([
'prefix' => 'users',
'middleware' => ['cors', 'json.response', 'auth:api']
], function () {
Route::put('/{user}', [UserController::class, 'update']);
});
我发送请求与VSCode扩展像这样:
PUT {{server}}/users/2
Content-Type: application/json
Authorization: Bearer {{token}}
{
"name": "Jane Doe",
}
但是它没有改变name
。我不明白我错过了什么。
我试图自己更改选择的用户数据。
我认为这是关于不扩展use IlluminateDatabaseEloquentModel;
。
控制器可能找不到$user。将代码改为$user = auth('api')->user();在更新功能。并从括号中删除User $ User。