首页 > 解决方案 > 在 Laravel API 请求中更新多对多关系后返回模型时出错

问题描述

我正在设置一个 Laravel API,并且正在处理用户模型。

它有两种关系: - 一对多关系:角色 - 多对多关系:团队

当我通过 API 请求更新一个用户时,它不会发回更新的多对多关系。

这是现在的更新功能:

public function update(Request $request, $id)
{
    $user = User::with('role', 'teams')->findOrFail($id);
    $user->update($request->all());
    if ($request->teams) {
        $user->teams()->sync($request->teams);
    }
    if ($request->role) {
        $user->role()->associate(Role::findOrFail($request->role));
    }
    $user->save();
    return response()->json($user, 200);
}

我正在发送一个用户对象:

User {
  email: "admin@admin.com"
  first_name: "Admin"
  teams: [4,5,6]
  ...
}

它在数据库中正确更新,但请求的返回对象在 teams 数组中不包含任何值:

User {
  email: "admin@admin.com"
  first_name: "Admin"
  teams: []
  ...
}

标签: phplaravelapilaravel-artisan

解决方案


推荐阅读