无法更新服务器上的用户,但可以使用 Laravel 在本地主机上工作

问题描述 投票:0回答:1

我正在开发一个 api,其中很多都工作得很好,但由于某种原因我无法更新成员。

这是路线:

    Route::prefix('member')->group(function () {
    Route::post('login', [App\Http\Controllers\Api\MemberAuthController::class, 'login']);
    Route::post('register', [App\Http\Controllers\Api\MemberAuthController::class, 'register']);

    Route::middleware('auth:member_api', 'member.auth.api')->group(function () {
        Route::get('/', [App\Http\Controllers\Api\MemberAuthController::class, 'getMember']);
        Route::put('/', [App\Http\Controllers\Api\MemberController::class, 'update']);

Auth 效果很好,我登录、获取令牌、粘贴令牌,然后将 PUT 请求发送到我的本地主机或服务器。

当我将请求发送到本地主机时,我会返回更新后的成员,但是当我向服务器发送请求时,我会得到原样的成员,并且它在数据库中仍然相同。

这是MemberController更新方法:

 * @param string $locale The locale setting (e.g., 'en-us')
 * @param Request $request
 * @param MemberService $memberService
 * @return \Illuminate\Http\JsonResponse
 */
public function update(string $locale, Request $request, MemberService $memberService)
{
    $member = $request->user('member_api');

    $data = $request->only(['name', 'email', 'password', 'street_name_number', 'city', 'zipcode', 'phone']);

    $updatedMember = $memberService->update($member, $data);

    return response()->json(['member' => $updatedMember], 200);

这就是MemberService更新方法

 * @param Member $member
 * @param array $data
 * @return Member
 */
public function update(Member $member, array $data): Member
{
    if (isset($data['password'])) {
        $data['password'] = bcrypt($data['password']);
    }

    $member->update($data);

    return $member->fresh();
}

我以为这很简单,但我不知道为什么它不起作用。

编辑:在两个单独的服务器上尝试过,它是带有 Web 应用程序和 api 部分的已完成的 Laravel 应用程序之一。这个 API 部分需要一些扩展,直到更新方法为止一切都很好

php laravel api sqlite service
1个回答
0
投票

就您共享的代码片段而言,我认为应该可以完成工作。然而,我认为可能错误的是会员模式;我知道我现在看不到内容,但您可能需要检查

fillable
以查看您尝试更新的列是否在
fillable
中。我认为,它们不属于模型的
guarded
属性。

如果你不知道,这仍然基于我的假设,要在 Laravel 中批量更新属性,你必须将它们包含在

fillable
中,或者至少排除那些你不想批量更新的属性通过将它们包含在模型的
guarded
属性中进行更新。

© www.soinside.com 2019 - 2024. All rights reserved.