Laravel старые изображения не удаляются методом getOriginal - PullRequest
1 голос
/ 16 апреля 2020

В моем проекте 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()?

1 Ответ

0 голосов
/ 16 апреля 2020

Ваша проблема не getOriginal, это неверный путь в операции удаления.

Добавьте Log::info($this->stationPhotoDir . '/' . $this->getOriginal('photo')) и посмотрите, что говорит путь.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...