hema / mongo_transaction

为 jenssegers/mongodb 添加事务功能

1.5 2020-01-01 12:37 UTC

This package is auto-updated.

Last update: 2024-09-16 16:23:59 UTC


README

Laravel Mongo 事务

如何安装

假设您已经安装了 composer require jenssegers/mongodb 并根据文档(https://packagist.org.cn/packages/jenssegers/mongodb)完全配置了它,现在运行以下命令来安装 mongo-transactions

composer require hema/mongo_transaction

在您的模型或基模型中使用以下模型

use Hema\MongoTransaction\Transactions\Eloquent\Model

而不是 Jenssegers 模型

use use Jenssegers\Mongodb\Eloquent\Model 

注意

  • 此包是为特定业务需求创建的。因此,它可能不完全符合您的需求 100%。但是,您仍然可以分支它并扩展或修改它。

  • 您需要在 Mongo 中启用副本集。

~$ sudo mongod --replSet "rs0" 

然后运行 mongo

~$ sudo mongo 

现在您可以使用以下方式使用事务

use Hema\MongoTransaction\Transactions\Transaction
* Transaction::start();

// ........ A bunch of other db operations

* Transaction::commit();

// ........ commit when success


* Transaction::rollback();

// ........ Or rollback when error occure

现在您可以使用以下方法与事务一起使用

* create();
* insert();
* update();
* delete();
* forceDelete(); 
* restore()
* increment();
* decrement();

* trash(); //custome method for soft-delete
* remove(); //custome method for hard-delete

示例

    Transaction::start();

  try {
 	User::insert($some_data);

  	Profile::insert($some_data);

        Transaction::commit();

        return 'done';

   } catch (\Exception $e) {

        Transaction::rollback();

  	return $e->getMessage();
   }