salvation/laravel-mongodb-transactions

扩展 Jenssegers/laravel-mongodb 支持事务功能

dev-master 2022-05-28 14:25 UTC

This package is auto-updated.

Last update: 2024-09-28 19:09:50 UTC


README

简介

Jensseger 的 laravel-mongodb 扩展包在 Laravel 开发者中非常流行,但它缺少事务功能。mongoDB 4.x 支持多文档事务。因此,这个包扩展了 Jenssegers/laravel-mongodb 以支持事务。

  1. mongoDB 事务基于 mongoDB4.x 副本集环境。 mongoDB
  2. 此包依赖于 Jenssegers/laravel-mongodb,因此需要先安装。

安装

关于包的使用,需要替换 Jenssegers/laravel-mongodb

Laravel

//Jenssegers\Mongodb\MongodbServiceProvider::class,
Zs\Mongodb\MongodbServiceProvider::class

Lumen

//$app->register(Jenssegers\Mongodb\MongodbServiceProvider::class);
$app->register(Zs\Mongodb\MongodbServiceProvider::class);

$app->withEloquent();

Eloquent

Eloquent 仅扩展了与事务相关的内容,因此它直接替换了 Jenssegers/laravel-mongodb

//use Jenssegers\Mongodb\Eloquent\Model as Eloquent;
use Zs\Mongodb\Eloquent\Model as Eloquent;

class User extends Eloquent {}
//use Jenssegers\Mongodb\Eloquent\Model as Eloquent;
use Zs\Mongodb\Eloquent\Model as Eloquent;

class MyModel extends Eloquent {

    protected $connection = 'mongodb';

}

有关更多 Eloquent 文档,请参阅 (https://laravel.net.cn/docs/eloquent)

用法

DB::beginTransaction();

try {
    User::insert($userData);
    UserInfo::insert($userInfoData);
    
    DB::commit();
} catch (\Exception $e) {
    DB::rollBack();
    throw $e;
}