BrownieCoffee
1 month ago
246
4
Laravel

Update datas if there are changing

Posted 1 month ago by BrownieCoffee

Hello guys,

I would to update user profile. I'm trying to find logic to update a specific field or all fields if there are changing. For example, if user decides to change avatar, only this information is updated. If user changes avatar and another field, the concerned inputs are selected and informations are updated.

Actually I have this logic but it's is it not good...

   // si un fichier image est contenu dans le champs image
        if ($request->avatar) {
            // je stocke le pseudonyme de l'utilisateur dans la variable
            $userFolder = $user->username;
            //je stoke le chemin du dossier que je vais créer par la suite dans une variable
            $storagePath = 'avatars/' . $userFolder;
            // j'apelle fonction deleteOldAvatar() qui va se charger de supprimer l'ancienne photo de profil de l'utilisateur et qui va laisser place la nouvelle photo de profil
            $this->deleteOldUserAvatar();
            //si le dossier n'existe pas, je le créer
            if (!Storage::exists($storagePath)) {
                // je récupère mon image que je vais stoker dans le dossier avatars/[nom-de-l'utilisateur] dans le storage local 'public/'
                $imagePath = $request->avatar->store($storagePath, 'public');
            }

            //je viens redimensionner mon image
            $image = Image::make(public_path("/storage/{$imagePath}"))->fit(800, 800);
            //je vais stoker mon image
            $image->save();

            // je mets à jour le profil de l'utilisateur
            $user->profile->update(array_merge(
                //je viens passer en premier argument mon tableau $userDatas
                $request->only('email', 'name', 'firstname'),
                //et en deuxième argument, la clé imgae qui nous emmenera vers $imagePath. Ainsi ce tableau viendra écrasera la valeur précédente concernant l'image
                ['avatar' => $imagePath]
            ));

            $user->notify(new SendEmailToUserToLetHisKnowHisAccountHasBeenEditedByAdmin($user));
            // je le redirige sur son compte avec un status pour l'informer de la mise à jour de son profil
            return redirect()->route('admin.users.showMembers', ['admin' => $admin, 'user' => $user])->with('status', 'Les changements ont bien été pris en compte.');
        }


 $user->update([
                'firstname' => $request->firstname,
                'name' => $request->name,
                'email' => $request->email,
            ]);

            $user->profile->update([
                'biography' => clean($request->biography),
            ]);


            
            $user->notify(new SendEmailToUserToLetHisKnowHisAccountHasBeenEditedByAdmin($user));
            return redirect()->route('admin.users.showMembers', ['admin' => $admin, 'user' => $user])->with('status', 'Les changements ont bien été pris en compte.');

If you have any idea, I'm would like to have your suggestion . S.U.+

Please sign in or create an account to participate in this conversation.