Laravel по-русски

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

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

#1 Laravel 6/7/8/9/10 » Бесконечный запрос при обновлении пользователя » 28.08.2024 14:52:04

gatoridnb
Ответов: 0

Здравствуйте,

пытаюсь обновить пользователя, если он ввел другую почту при ее верификации. Во время $user->update() запрос становится бесконечным без ответа, а дальнейший код не выполняется. Почта обновляется, но не верифицируется.

public function verify(Request $request)
    {
        $request->validate([
            'code'  => ['required', 'string', 'size:6'],
            'email' => ['required', 'email', Rule::unique('users', 'email')->ignore(user()->id)]
        ]);

        $user = user();
        $newEmail = $request->email;

        $verification = EmailVerification::where('email', $newEmail)
            ->where('code', $request->code)
            ->where('created_at', '>=', Carbon::now()->subMinutes(10))
            ->first();

        if (!$verification) {
            throw ValidationException::withMessages([
                'code' => ['Неверный код или код просрочен']
            ]);
        }

        if ($newEmail !== $user->email) {
            $user->update(['email' => $newEmail]);
        }

        $user->markEmailAsVerified();
        $verification->delete();

        return new JsonResponse('Успех');
    }

в чем может быть проблема и где нужно копать?

#2 Laravel 6/7/8/9/10 » как удалить картинки media library в транзакции » 27.05.2024 14:57:21

gatoridnb
Ответов: 1

я не понимаю, как мне удалить картинки, которые создались до ошибки в 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");
        }
    }

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