В настоящее время я работаю над проектом, в котором есть раздел управления учетными записями, где системный администратор создает учетные записи пользователей.
В таблице [Пользователи] есть столбец с именем «Имя_организации», который представляет организацию, представленную пользователем. После отправки формы «Название_организации» будет также добавлено в таблицу [Организация] в поле [название]. Эти две таблицы связаны столбцом «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
]);
}
}
Спасибо!
1 ответ
Зачем нужно добавлять user_id в организацию??
В организации должно быть много студентов или пользователей.
Не нужно хранить имя_организации в таблице пользователей, просто сохраните идентификатор организации.
Если вам нужно обновить название организации, просто обновите его в таблице организации.
Поскольку вам не нужно вносить изменения в таблицу пользователей, вы просто сохраняете здесь идентификатор.
Не стесняйтесь комментировать, если у вас возникнут какие-либо затруднения.
Похожие вопросы
Новые вопросы
php
PHP — это широко используемый язык сценариев общего назначения с открытым исходным кодом, мультипарадигмальный, динамически типизированный и интерпретируемый, изначально разработанный для веб-разработки на стороне сервера. Используйте этот тег для вопросов о программировании на языке PHP.