Answer the question
In order to leave comments, you need to log in
How to delete multiple files while deleting post and information in database at the same time?
I am working on the admin panel - CRUD for the site. Each post has a gallery of images, information about which is stored in a separate database table. Image files are downloaded and stored in /storage/app/public.
There was some issue when deleting image files from the storage folder when deleting a post. There are no problems with deleting information about these files in the database, but I have some misunderstanding how to delete a group of files associated with a post when deleting a post.
Please help. Can you tell me the most rational way?
//Pechnik - модель/таблица содержит данные поста
//Images - модель/таблица содержит информацию о изображениях галереи
// - метод ресурсного контролера для удаления поста
public function destroy($id)
{
Images::where('pechnik_id', $id)->delete();
Pechnik::find($id)->delete();
return redirect()->route('admin.index')->with('success', 'Информаця успешно удалена');
}
Answer the question
In order to leave comments, you need to log in
I will describe the solution to this problem. I solved the task of simultaneously deleting gallery files when deleting a post as follows:
//Pechnik - модель/таблица содержит данные поста
//Images - модель/таблица содержит информацию о изображениях галереи
// - метод ресурсного контролера для удаления поста
public function destroy($id)
{
$images = Images::where('pechnik_id', $id); //получаю колекцию файлов галереи превязанных к ID поста p из таблицы Images
$pathImages = $images->get('img'); //получаю данные наименование и путь файлов галереи превязанных к ID поста
if (!$pathImages->isEmpty()){
foreach ($pathImages as $img){
$path = $img->img;
Storage::disk('public')->delete(str_replace('storage', '', $path)); //в цикле удаляю фалы галереи превязанных к ID поста
}
}
$images->delete(); // удаляю записи в таблице Images:: о файлах галереи
$pechnik= Pechnik::find($id); // получаю данные поста по ID из таблицы Pechnik::
Pechnik::find($id)->delete(); // удаляю запись в таблице Pechnik:: - данные поста
return redirect()->route('admin.index')->with('success', 'Информаця успешно удалена');
}
Didn't find what you were looking for?
Ask your questionAsk a Question
731 491 924 answers to any question