【问题标题】:Laravel mongodb transactions does not rollbackLaravel mongodb 事务不回滚
【发布时间】:2020-02-18 08:07:56
【问题描述】:

我需要在 laravel-5.8 的 mongodb 上使用事务。我正在使用 jenssegers-laravel-mongodb 并在我的代码中使用如下 sn-p 但当其中一个查询失败时它不会回滚。

$session = MongoDB::startSession();
$session->startTransaction();
try {
    Player::document()->update($updates, ['session' => $session]);
    $session->commitTransaction();
    return true;
} catch (\Exception $e) {
    $session->abortTransaction();
    return false;
}

我发现,这个包不支持事务。我迫切需要在我的代码中支持事务。你能告诉我该怎么做吗?

【问题讨论】:

    标签: laravel mongodb transactions jenssegers-mongodb


    【解决方案1】:

    不要使用 MongoDb 类,而是尝试使用 Laravel 的 DB 类,手动更改您正在连接的数据库驱动程序并运行 DB 事务命令,如下所示

    
    \DB::connection(config('database.connections.mongodb'));
    \DB::beginTransaction();
    
    try {
        Player::document()->update($updates, ['session' => $session]);
        \DB::commit();
        return true;
    } catch (\Exception $e) {
        \DB::rollback();
        return false;
    }
    
    

    【讨论】:

    • 雄辩的 create() 方法呢?它没有选项那么我们如何通过会话?
    猜你喜欢
    • 2020-06-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-09-19
    • 2021-03-20
    相关资源
    最近更新 更多