zubair malik
zubair malik

Reputation: 223

I am trying to update user data with role using laravel

i am trying to update user data with roles but unfortunately i am getting error please help me how can i resovle this issue thanks.

i am getting error please chack

Illegal string offset 'name'

https://flareapp.io/share/Bm01YzaP

Note i am using spaite laravel permission

return request

{
"_token": "6uupkcqfyN8eqmnXTRztBXostJur03a8g3iTaRbC",
"_method": "put",
"name": "zubair",
"roles": [
"Employee"
],
"password": null,
"email": "[email protected]"
}

controller

    public function update(Request $request, $user)
    {
            return $request->all();
        $user['name'] = $request->name;


        if ($request->password) {
            $user['password'] = Hash::make($request->password);
        }
        $user['email'] = $request->email;
        $user->update($user);
        $user->syncRoles($request->roles);

        return redirect()->intended('user');
    }

Upvotes: 0

Views: 273

Answers (3)

Babalola Macaulay
Babalola Macaulay

Reputation: 359

Your controller update method can be better written using Laravel Route Resource Binding as:

public function update(Request $request, User $user)
{
    $user->name = $request->name;
    if ($request->password) {
        $user->password = Hash::make($request->password);
    }
    $user->email = $request->email;
    $user->save();
    
    $user->syncRoles($request->roles);

    return redirect()->intended('user');
}

Upvotes: 1

JS_LnMstr
JS_LnMstr

Reputation: 378

I hope you have a // before your first return.. i cant have 2 returns on your function or all the code after the first return will not work.

After that you should declare your $user variable as a User Model like this:

public function update(Request $request, User $user) {
      // your code
}

Upvotes: 1

Muhammad
Muhammad

Reputation: 387

Use proper route model binding update(Request $request, User $user)

Upvotes: 1

Related Questions