Как удалить изображение с мультиудалением? - PullRequest
0 голосов
/ 22 января 2020

У меня есть мульти-удаление, которое мне нужно при удалении news удаление изображения каждого нового, который я выбрал

Код контроллера:

public function delMulti(Request $request)
{
    if(is_array($request->muti_delete)){

        News::destroy($request->muti_delete);
    }else{

        News::find($request->muti_delete)->delete();
    }
    return redirect()->back();
}

$request->muti_delete -> array of ids of news

Мой собственный член для изображений:

Storage::disk('public_uploads')->delete('news/'. $news->image);

Ответы [ 2 ]

2 голосов
/ 22 января 2020

У новостей есть идентификатор? Попробуйте это

News::whereIn('id', $request->muti_delete)->get()->each(function($msg) {
    Storage::disk('public_uploads')->delete('news/'. $msg->image);
    $msg->delete();
});

Сначала нам нужно получить все новости с помощью get (). Функция each () аналогична функции foreach (). Он будет выполнять коды для каждой новости. Если я использую foreach (), код будет выглядеть следующим образом:

$messages = News::whereIn('id', $request->muti_delete)->get();

foreach ($messages as $msg) {
    $this->delete_image($msg->image);
    $msg->delete();
}

И я думаю, вам следует создать функцию для удаления изображения, чтобы оно выглядело более четким.

1 голос
/ 22 января 2020

Используйте этот код

$image_path = "/images/filename.ext";  // Value is not URL but directory file path
if(File::exists($image_path)) {
    File::delete($image_path);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...