//Pechnik - модель/таблица содержит данные поста
//Images - модель/таблица содержит информацию о изображениях галереи
// - метод ресурсного контролера для удаления поста
public function destroy($id)
{
Images::where('pechnik_id', $id)->delete();
Pechnik::find($id)->delete();
return redirect()->route('admin.index')->with('success', 'Информаця успешно удалена');
}
//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', 'Информаця успешно удалена');
}
// В контроллере картинки не трогаем
public function destroy($id)
{
Pechnik::destroy($id);
// return ..
}
// Pechnik.php
protected static function booted()
{
// При удалении удаляем связаные картинки
static::deleted(function (Pechnik $pechnik) {
// Обновлено, т.к. mass delete не вызывает событие для модели Image
// $pechnik->images()->delete();
// Подход тоже не оптимальный, лишние запросы к БД. Есть что улучшать.
foreach ($pechnik->images as $image) {
$image->delete();
}
});
}
// Image.php
protected static function booted()
{
// Удаление картинки из БД - удаляем файл
static::deleted(function (Image $image) {
// Удаляем файл
});
}