Логотип YeaHub

База вопросов

Собеседования

Тренажёр

База ресурсов

Обучение

Навыки

Задачи

Войти

Выбери, каким будет IT завтра — вместе c нами!

YeaHub — это полностью открытый проект, призванный объединить и улучшить IT-сферу. Наш исходный код доступен для просмотра на GitHub. Дизайн проекта также открыт для ознакомления в Figma.

© 2026 YeaHub

AI info

Карта сайта

Документы

Медиа

Назад
Вопрос про Laravel: transaction, commit

Как использовать транзакции в Laravel (какие способы/вызовы)?

Вопрос проверяет, понимаете ли вы принципы атомарности операций и умеете ли безопасно работать с БД при нескольких связанных изменениях.

Короткий ответ

Транзакции в Laravel используются для выполнения нескольких операций с БД как одного целого. Самый простой способ — метод DB::transaction(), который автоматически делает commit или rollback. Также можно управлять транзакцией вручную через beginTransaction, commit и rollBack. Транзакции помогают избежать частично сохранённых данных при ошибках.

Длинный ответ

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

Определение

Определение: Transaction — это набор операций с БД, который либо полностью подтверждается (commit), либо полностью откатывается (rollback).

Способ 1. DB::transaction() (рекомендуемый)

Этот вариант самый безопасный и удобный.

\DB::transaction(function () {
    // создание пользователя
    // создание связанной записи
});

Если внутри выбрасывается исключение, Laravel автоматически выполнит rollback.

Способ 2. Ручное управление

Используется, если нужен полный контроль.

\DB::beginTransaction();

try {
    // операции с БД
    \DB::commit();
} catch (\Throwable $e) {
    \DB::rollBack();
    throw $e;
}

Когда обязательно использовать транзакции

  • создание связанных сущностей

  • списание баланса и запись истории

  • обновление нескольких таблиц

Важные моменты

  • Транзакции работают только в рамках одной БД

  • Долгие операции внутри транзакций могут создавать блокировки

  • В Eloquent транзакции работают так же, как и в Query Builder

Краткий вывод

В большинстве случаев стоит использовать DB::transaction(), а ручное управление оставлять для редких и сложных сценариев.

  • Аватар

    PHP Guru

    Mikhail Savin

    Guru – это эксперты YeaHub, которые помогают развивать комьюнити.

Уровень

  • Рейтинг:

    4

  • Сложность:

    5

Навыки

  • Laravel

    Laravel

Ключевые слова

#transaction

#commit

Подпишись на PHP Developer в телеграм

  • Аватар

    PHP Guru

    Mikhail Savin

    Guru – это эксперты YeaHub, которые помогают развивать комьюнити.