#php #laravel-8
Вопрос:
я пытаюсь восстановить удаленный файл в общей папке laravel, вот мой код по методу удаления :
$submissions = Submission::find((int)$id);
$submissionPath = public_path().'/'.$submissions->submission_path;
if(File::exists($submissionPath)){
// delete file :
File::delete(public_path($submissionPath));
// delete in database :
$submissions->delete();
return ResponseFormatter::success(
$submissions
, 'Submission successfully deleted');
}else{
return ResponseFormatter::error(null, 'file not found', 404);
}
в настоящее время я знаю, как восстановить мягко удаленное поле в базе данных, но я много борюсь с файлом в хранилище.
кто-нибудь знает, как заставить функцию restore() функционировать? особенно для мягко удаленных ФАЙЛОВ
Комментарии:
1. Я не думаю, что вы можете программно удалить реальный файл в системе. Он либо удален, либо нет. Запись базы данных soft_deleted-это просто еще один столбец в базе данных.
2. мягкое удаление не предназначено для удаления фактического файла. Вы не должны удалять файл, когда пытаетесь его мягко удалить
3. во-первых, убедитесь, что файл также будет мягко удален. проблема, с которой я столкнулся здесь, я не могу связать файл, который был удален программно, вот почему я хочу его восстановить. но у меня нет ни малейшего представления об этом
Ответ №1:
Мягкое удаление применяется только к записям базы данных. Когда модель использует свойство SoftDeletes, она будет использовать столбец deleted_at для определения того, удалена запись или нет. Не существует концепции мягкого удаления файла. Вы можете создать свой собственный, подключив код удаления, чтобы переместить файл в отдельную папку, чтобы его можно было восстановить при восстановлении записи.