public static function make(User $user, UserRequest $request) { $avatarName = static::generateName(null, $request->file('avatar')->getClientOriginalExtension()); $avatarUrl = static::url($avatarName); $avatarMime = $request->file('avatar')->getMimeType(); $avatarSize = $request->file('avatar')->getSize(); // Move avatar file $request->file('avatar')->move(public_path('avatars'), $avatarName); if (isset($user->avatar) && !is_null($user->avatar->name)) { $avatar = $user->avatar; Avatar::deleteFile($avatar->name); } else { // New up Avatar object $avatar = new Avatar(); // Associate user to the avatar $avatar->user()->associate($user); } // Assign required properties $avatar->name = $avatarName; $avatar->url = $avatarUrl; $avatar->mime = $avatarMime; $avatar->size = $avatarSize; // Save the avatar $avatar->save(); }