Для удаления файла при обновлении информации можно использовать следующий подход:
1. Проверить, было ли передано новое изображение при обновлении пользователя.
2. Если новое изображение было передано, удалить старый файл изображения.
3. Сохранить новое изображение.
Чтобы оптимизировать метод обновления пользователя в контроллере UserController, можно добавить следующий код:
```php
public function update(Request $request, User $user)
{
$validatedData = $request->validate([
'name' => 'required|string',
'email' => 'required|email',
'avatar' => 'image|mimes:jpeg,png,jpg,gif|max:2048'
]);
if ($request->hasFile('avatar')) {
if ($user->avatar) {
Storage::delete($user->avatar); // Удалить старый файл изображения
}
$avatar = $request->file('avatar')->store('avatars'); // Сохранить новое изображение
}
$user->name = $validatedData['name'];
$user->email = $validatedData['email'];
$user->avatar = $avatar ?? $user->avatar;
$user->save();
return response()->json($user);
}
```
Этот код оптимизирует метод обновления пользователя, удаляя старый файл изображения при обновлении и сохраняя новый файл, если он был передан.
Чтобы проверить наличие загруженного изображения перед обновлением пользователя и избежать сохранения старого файла, можно использовать выражение `$avatar ?? $user->avatar` в коде выше. Это выражение означает, что будет использовано новое изображение (если оно было передано), или будет использовано старое изображение пользователя. Таким образом, можно избежать сохранения старого файла, если новое изображение не было передано.