Nima
Nima

Reputation: 91

Laravel : Change data after update Request

I am using Select2 for create multiple data in database.

My Languages Field In Database:

English,French,Spanish

My Controller

public function store(UserCreateRequest $request)
  {

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

But After Update The language field changes as follows

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

Update in controller

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

}

I'm Using in_array() in edit Form For Showing Selected Data

Upvotes: 0

Views: 344

Answers (1)

Naumov
Naumov

Reputation: 1167

You can create one methods, or rewrite you'r update methods

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');

}

But I think batter create relation user -> manyToMany -> language, table example

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

For select get all from language. For attach language to user use attach method. For get all language just call ->languages on user. And etc. Sorry for my English I hope you understand me.

Upvotes: 3

Related Questions