hema / mongo_transaction
为 jenssegers/mongodb 添加事务功能
1.5
2020-01-01 12:37 UTC
Requires
- jenssegers/mongodb: ^3.1
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(); }