Я создаю приложение, которое может (мягко) удалить сообщение. Это приведет к удалению записи в базе данных и удалению файла изображения в хранилище. Я попытался создать метод переопределения для delete()
в моей модели, и он выглядит так:
public function delete()
{
$tempImage = $this->image;
parent::delete();
$this->imageDelete($tempImage);
}
public function imageDelete($image)
{
$this->image = null;
$this->save();
if (! empty($image)) {
unlink(public_path() . self::$pathImage . $image);
unlink(public_path() . self::$pathThumb . $image);
}
}
. Он работает для удаления одной записи. Но когда я пытаюсь удалить несколько записей (используя whereIn
), метод переопределения недоступен, а whereIn
обращается к реальному методу delete()
.
Это мой контроллер для удаления сообщений
public function delete(Request $r)
{
Message::findOrFail($r->id)->delete();
return redirect()->back();
}
public function multipleDelete(Request $r)
{
Message::whereIn('id', $r->select)->delete();
return redirect()->back();
}
Если я удаляю записи с помощью multipleDelete()
, удаляются только записи в базе данных.