Laravel по-русски

Русское сообщество разработки на PHP-фреймворке Laravel.

Ты не вошёл. Вход тут.

#1 27.05.2024 14:57:21

как удалить картинки media library в транзакции

я не понимаю, как мне удалить картинки, которые создались до ошибки в transaction? они в бд дропаются, но не удаляются в storage (в дальнейшем будет использоваться s3, если это играет роль)

public function store(LessonStoreRequest $request, Course $course)
    {
        try {
            // Начинаем транзакцию
            DB::beginTransaction();

            // Транзакция для создания урока и блоков
            $lesson = DB::transaction(function () use ($request, $course) {
                // Вызов метода сервиса для создания урока с блоками
                $lesson = $this->service->createLessonWithBlocks($course, $request->title, $request->blocks);

                // Обработка медиафайлов
                foreach ($lesson->blocks as $block) {
                    if (is_array($block->params)) {
                        $this->service->handleMedia($block, $block->params);
                    }
                }

                return $lesson;
            });

            // Фиксация транзакции
            DB::commit();

            return new LessonWithBlocksResource($lesson);
        } catch (\Exception $e) {
            // здесь нужно удалить картинки

            // Откатываем транзакцию в случае ошибки
            DB::rollBack();

            abort(400, "Не удалось создать урок: $e");
        } catch (\Throwable $t) {

            // здесь нужно удалить картинки

            // Откатываем транзакцию в случае критической ошибки
            DB::rollBack();

            abort(500, "Не удалось создать урок: $t");
        }
    }

Не в сети

#2 12.08.2024 16:30:53

Re: как удалить картинки media library в транзакции

здесь не видно как вы их помещаете в сторадж. очевидно что удаление должно быть реализовано как-то подобно добавлению, вероятно в том же сервисном классе.

Throwable является предком Exception поэтому у вас тут очевидное дублирование.


There are two hard things in computer science: cache invalidation, naming things, and off-by-one errors.

Не в сети

Подвал раздела