Laravel: Изменить данные после запроса на обновление - PullRequest
0 голосов
/ 03 августа 2020

Я использую Select2 для создания нескольких данных в базе данных.

Поле «Мои языки» в базе данных:

English,French,Spanish

Мой контроллер

public function store(UserCreateRequest $request)
  {

    $data = $request->all();
    $data['languages'] = implode(',', $request['languages']);
    User::create($data);
    return redirect()->back()->with('message', 'Account Successfully Created');
  }

Но после обновления поле языка меняется следующим образом:

["English","French","Spanish"]

Обновление в контроллере

    public function update(Request $request, $id)
{
    $user = User::findOrFail($id);
    $user->update($request->all());
    return redirect()->back()->with('message', 'Account Successfully Updated');

}

Я использую in_array () в форме редактирования для отображения выбранных данных

1 Ответ

3 голосов
/ 03 августа 2020

Вы можете создать один метод или переписать свои методы обновления

public function update(Request $request, $id)
{
    $user = User::findOrFail($id);
    
    $data = $request->all();
    $data['languages'] = implode(',', $request['languages']);

    $user->update($data);
    return redirect()->back()->with('message', 'Account Successfully Updated');

}

Но я думаю, что тесто создает отношения user -> manyToMany -> language, table example

user {user_id, email, password}
user_language {user_language_id, user_id, language_id}
language {language_id, key, title}

Для выбора получить все с языка. Для прикрепления языка к пользователю используйте метод прикрепления. Чтобы получить все языки, просто позвоните пользователю ->languages. И эт c. Извините за мой английский sh Надеюсь, вы меня понимаете.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...