Русское сообщество разработки на PHP-фреймворке Laravel.
Ты не вошёл. Вход тут.
Страницы 1
Здравствуйте,
пытаюсь обновить пользователя, если он ввел другую почту при ее верификации. Во время $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('Успех');
}
в чем может быть проблема и где нужно копать?
я не понимаю, как мне удалить картинки, которые создались до ошибки в 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");
}
}
Страницы 1