В настоящее время я работаю над проектом, в котором есть раздел управления учетными записями, где системный администратор создает учетные записи пользователей.

В таблице [Пользователи] есть столбец с именем «Имя_организации», который представляет организацию, представленную пользователем. После отправки формы «Название_организации» будет также добавлено в таблицу [Организация] в поле [название]. Эти две таблицы связаны столбцом «user_id» (взято из столбца «id» в [Users]).

Мне удалось создать рабочий код для добавления учетной записи [Пользователи], которая также добавляет имя_организации в таблицу [Организация], хотя теперь мне интересно, как я могу сделать функцию, которая также будет редактировать строки в таблице [Организация] всякий раз, когда я редактирую поля в [User].

(например, я изменил поле «organization_name» в [Users] с id=1 с «Organization A» на «Organization B», поле «name» в [Organization] с user_id=1 также должно измениться с «Organization A» к «Организации Б» тоже).

ПРИМЕЧАНИЕ. «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
            ]);
        }

    }

Спасибо!

0
TechArtificer 15 Ноя 2019 в 00:18
1
Где здесь релевантность jQuery?
 – 
mplungjan
15 Ноя 2019 в 00:20
Может быть проще найти триггер на таблицах для обновления. ИЛИ иметь отдельную таблицу с названиями организаций. Затем fk в таблицах, которые относятся к этому имени
 – 
hurnhu
15 Ноя 2019 в 00:22
Как мне заставить этот триггер обновляться? У меня уже есть отдельная таблица с названием организации, таблица [Организация] (она находится в функции createSubUser), а user_id — это то, что связывает указанную таблицу с таблицей [Пользователи].
 – 
TechArtificer
15 Ноя 2019 в 00:28
Если вы используете mysql mysqltutorial.org/create-the-first -триггер-в-mysql.aspx. Если у вас уже есть отдельная таблица, почему названия организаций также хранятся в таблице [Пользователь]?
 – 
hurnhu
15 Ноя 2019 в 00:32
Имена организаций в таблице [Пользователи] можно заполнить, все, что там будет введено, будет отражено и создано в таблице [Организация]. Я успешно выполнил эту часть, мне просто было интересно, как я могу обновить поле «имя» из таблицы [Организация] всякий раз, когда я обновляю поле «organization_name» из таблицы [Пользователи]
 – 
TechArtificer
15 Ноя 2019 в 00:39

1 ответ

Зачем нужно добавлять user_id в организацию??
В организации должно быть много студентов или пользователей.
Не нужно хранить имя_организации в таблице пользователей, просто сохраните идентификатор организации.
Если вам нужно обновить название организации, просто обновите его в таблице организации.
Поскольку вам не нужно вносить изменения в таблицу пользователей, вы просто сохраняете здесь идентификатор.
Не стесняйтесь комментировать, если у вас возникнут какие-либо затруднения.

1
albus_severus 15 Ноя 2019 в 05:39
Система, которую я создаю, представляет собой список президентов организаций, поэтому в каждой организации есть только 1 представитель (президент). В таблице [Пользователи] есть столбец Organization_name, потому что при регистрации они вводят в него название своей организации. Затем система добавляет организацию, которую они поместили в таблицу [Организации], со следующими столбцами: - user_id - имя (название_организации) Можете ли вы предложить способ, когда я отражается также в столбце «Имя» таблицы [Организации]?
 – 
TechArtificer
18 Ноя 2019 в 01:57