Как удалять изображения в функции delete?

176
05 января 2022, 09:50

Мне нужно чтобы удалялись изображения из папки upload.Например если у пользователя в бд сохранено имя изображения (Esfejih.jpeg) то искалось это изображения в папке и удалялось при срабатывания функции delete()

в контролере

public function destroy($id){
        $dopysk=Dopysk::find($id);
        $dopysks2='upload/'.$dopysk->spravka035;
        $dopysks1='upload/'.$dopysk->ydostak;
        $dopysks2 ->delete();
        $dopysks1->delete();
        $dopysk->delete();
        return redirect('dopysk');
    }
Answer 1
  public function destroy($id){
        $dopysk=Dopysk::find($id);
        $path='upload/'.$dopysk->spravka035;
        $path2='upload/'.$dopysk->ydostak;
        unlink(public_path($path));
        unlink(public_path($path2));
        $dopysk->delete();
        return redirect('dopysk');
    }
Answer 2

Я бы поступил малость по другому, немного переписал бы модель Dopysk

class Dopys extends Model 
{
    // ваш код
    public function delete()
    {
        unlink(public_storage('upload/'.$this->spravka035));
        unlink(public_storage('upload/'.$this->ydostak));
        return parent::delete();
    }
}

И уже после этого переписал бы метод дестрой как он и должен быть

 public function destroy(Dopysk $dopysk){
    $dopysk->delete();
    return redirect('dopysk');
}

Модель Dopysk ларавел найдёт сам если в роуте в качестве параметра вы передаёте ей ID объекта бд модели. Это поможет вам сохранить нервы и память особенно когда вы будете удалять Dopysk не из метода destroy а из другого связанного метода, вам не придётся каждый раз писать удаление файлов

READ ALSO
Как убрать валидатор в woocommerce?

Как убрать валидатор в woocommerce?

В woocommerce на странице корзины используются эти шорткоды:

211
Подружить MSSQL и PHP 7+

Подружить MSSQL и PHP 7+

Необходимо поднять проект, написанный на ZendFramework (к делу особо не относится, проект будет переписываться)Используется MSSQL в качестве БД

170
как вывести два поля в гридвью?

как вывести два поля в гридвью?

balance_up и credit_up соответственно тоже в две строкиЕсли изменение больше ноля, тогда добавь к значению +, если меньше - то там и так - (минус) будет

209
Пример стратегии на PHP

Пример стратегии на PHP

Здесь приведён пример стратегии на PHP: https://refactoringguru/ru/design-patterns/strategy/php/example#example-1

154