В моем проекте Laravel 7 я переименовываю изображения при загрузке на основе поля Station name
. Преобразование строки в slug с использованием Str::of($name)->slug()
см. Ниже
Именование изображения
public function setStationName($extension, $name)
{
return 'station-' . Str::of($name)->slug() . '.' . $extension;
}
Таким образом, оно сгенерирует имя типа station-foo-bar.png
и, наконец, сохранит его в столбце photo
в базу данных.
Поскольку поле name
является редактируемым, поэтому пользователь сможет изменить поле имени в любое время, и если пользователь загружает новое изображение с измененным полем имени, новое изображение будет есть новое имя.
Здесь у меня возникают проблемы.
При обновлении записи новым изображением и измененным полем, если я удаляю старое изображение, используя метод getOriginal('photo)
, это не удаляя изображение. Однако оно удаляет изображение, если поле name
не изменено.
Модель станции
public function deletePhoto()
{
Storage::disk('public')->delete($this->stationPhotoDir . '/' . $this->getOriginal('photo'));
}
Когда я dd
проверю значение getOriginal('photo')
, оно возвращается правильное имя файла, которое я хочу удалить, но оно не удаляется.
Вопрос:
Как удалить старые изображения, используя метод getOriginal()
?