编辑另一个相关表中的字段后如何更新表?

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

我目前正在一个具有帐户管理部分的项目中,系统管理员在其中创建用户帐户。

[用户]表具有名为“ Organization_name”的列,该列是用户代表的组织。提交表单后,“组织名称”也将添加到[组织]表中的[名称]字段下。这两个表通过“ user_id”列关联(从[Users]的“ id”列中获取)。

我设法创建了一个工作代码来添加一个[用户]帐户,该帐户也将organization_name添加到了[Organization]表中,尽管现在我想知道如何创建一个函数来编辑[Organization]中的行]表,只要我编辑[用户]中的字段。

((例如,我将[Users]中ID = 1的“ organization_name”字段从“ Organization A”更改为“ Organization B”,[Organization]中user_id = 1的“ name”字段也应从“ Organization A”到“组织B”)。

[注意:“ role_id”确定用户帐户将具有哪种帐户权限,它不会影响该问题,但是为了防万一,我会将其保留在下面的代码段中。

我将在下面附加我使用的代码:

UserController.php


private static function createUser(Request $request)
    {
        $user = new User();
        $user->email = $request->get('email');
        $user->organization_name = $request->get('organization_name');
        $user->password = Hash::make($request->get('password'));
        $user->role_id = $request->get('role_id');
        return $user;
    }

private static function createSubUser(Request $request, $user_id)
    {
        $role_id = $request->get('role_id');
        if($role_id == 1)
        {
            $sub_user = new Organization();
            $sub_user->user_id = $user_id;
            $sub_user->name = $request->get('organization_name');

        }
        elseif($role_id == 2)
        {
            $sub_user = new Staff();
            $sub_user->user_id = $user_id;
        }
        elseif($role_id == 3)
        {
            $sub_user = new Administrator();
            $sub_user->user_id = $user_id;
        }
        return $sub_user;
     }

public function register(Request $request)
    {
        $validator = Validator::make($request->all(), [
            'email' => 'required|string|email|max:255|unique:users',
            'organization_name' => 'required|string|max:255|unique:users',
            'password' => 'required|string|min:6',
        ]);

        if($validator->fails()){
            return response()->json($validator->errors()->toJson(), 400);
        }

        $user = static::createUser($request);
        $user->save();
        $sub_user = static::createSubUser($request, $user->id);
        $sub_user->save();

    }

public function updateUserInfo(Request $request)
    {
        $user = User::find($request->id);
         if($user->email == $request->email){
            $check_email = false;
        } 
        else{
            $check_user = User::where('email', $request->email)->first();
            if (!empty($check_user)) {
                $check_email = true;
            }
            else {
                $check_email = false;
            }
        }

        if($check_email === true)
        {
            return response()->json([
                'success' => false,
                'error' => "User with the registered email of {$request->input('email')} already exists",
            ]);
        }
        else 
        {
            $user = User::where('id', $request->id)->update([
                'email' => $request->input('email'),
                'organization_name' => $request->input('organization_name'),
                'role_id' => $request->input('role_id')

            ]);
            return response()->json([
                'success' => true,
                'user' => $user
            ]);
        }

    }

谢谢!

php laravel
1个回答
0
投票

为什么需要在组织上添加user_id?一个组织应该有许多学生或用户。无需在用户表上存储organization_name,只需保存组织的id即可。当您需要更新组织名称时,只需在组织表上进行更新即可。因为您不需要更改用户表,所以只需在此处保存ID。如有任何疑问,请随时发表评论。

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