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

v1.0.2 2022-08-03 09:26 UTC

This package is auto-updated.

Last update: 2024-09-30 01:20:28 UTC


README

介绍

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

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

安装

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

通过composer安装

composer require imanrjb/laravel-mongodb

Laravel

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

Lumen

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

$app->withEloquent();

Eloquent

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

use ImanRjb\Mongodb\Eloquent\Model;

class User extends Model {}
use ImanRjb\Mongodb\Eloquent\Model;

class MyModel extends Model {

    protected $connection = 'mongodb';

}

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

用法

DB::connection('mongodb')->beginTransaction();

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