f_society
@f_society
по граблям новичка

Как удалить файл физически в Yii2 по связанной таблице в цикле?

стандартная функция удаления
public function actionDelete($id)
    {
        $this->findModel($id)->delete();
        return $this->redirect(['advbyuser']);
    }

Есть связанная таблица image из которой надо удалить строки в цикле вместе с картинками при удалении объявления, и в конце саму папку картинок
Путь картинок - пример: @web/upload/store/Adverts/Adverts8/b0cd8f.jpg
Помогите это все организовать, я примерно знаю как это будет работать. Но реализовать что то не получается
  • Вопрос задан
  • 599 просмотров
Решения вопроса 1
slo_nik
@slo_nik Куратор тега Yii
Добрый день.
Связь по внешнему ключу есть?
Если есть, то при удалении записи будут удаляться записи из таблицы image.
А директорию можно удалить так:
public function actionDelete($id)
    {
        if($this->findModel($id)->delete()){
           FileHelper::removeDirectory($path_to_dir);
        }
        return $this->redirect(['advbyuser']);
    }

Либо сделать так:
public function beforeDelete()
    {
        if(!parent::beforeDelete()){
            return false;
        }
        $path = 'path_to_dir';
        FileHelper::removeDirectory($path);
        return true;
    }
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
В методе afterDelete(); задайте необходимую логику действий после удаления записи, а именно ‒ физическое удаление файла и его родительских директорий (при условии что они пусты).
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы