PHPackages                             rayful/db-manager2 - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [Database &amp; ORM](/categories/database)
4. /
5. rayful/db-manager2

ActiveLibrary[Database &amp; ORM](/categories/database)

rayful/db-manager2
==================

A new MongoDB ORM for mongoDB Driver for PHP(PHP7)

2.1(7y ago)199MITPHP

Since Jun 18Pushed 7y ago1 watchersCompare

[ Source](https://github.com/rayful/DBManager2)[ Packagist](https://packagist.org/packages/rayful/db-manager2)[ RSS](/packages/rayful-db-manager2/feed)WikiDiscussions master Synced 3d ago

READMEChangelog (8)Dependencies (3)Versions (8)Used By (0)

DBManager2
==========

[](#dbmanager2)

A new ORM Driver for mongoDB driver for PHP(PHP7)

require: PHP5.5+, MongoDB Driver.

Install
=======

[](#install)

composer require rayful/db-manager2

History
=======

[](#history)

2.1版本
-----

[](#21版本)

- 增加对日期的格式转换显示、还有入库时自动取当时时间的支持，见DatetimeUtility类；

```
$user = new stdClass();
$user->created = \rayful\MongoDB\DatetimeUtility::getNowDatetime();
echo \rayful\MongoDB\DatetimeUtility::toString($user->created);
```

- 增加对MongoGridFS的支持（依赖mongodb/mongodb包）

```
$gridFSManager = new \rayful\MongoDB\GridFSManager();
$id = $gridFSManager->upload('','abc.jpg', '/Users/kingmax/Downloads/全部行为.jpg');

$bytes = $gridFSManager->downloadBytes('', $id);
```

2.01版本
------

[](#201版本)

- Fix Bug, DataSet parseRequest()的强制参数类型去除
- Fix Bug, DBManager的insert、update、delete三个方法同时兼容数组及对象，并且入库前会将入参转换为数组，使代码执行稳定性更强（待验证）

2.0版本
-----

[](#20版本)

- 去除几个函数，包括：DataSet=&gt;setByRequest与readRequest，变成parseRequest($request);
- 分页依赖变成最新版rayful/pagination 2.0，留下paginate方法，但不包含样式，最新分页详细说明请见:
- 增加DBManager的批量操作功能，包括批量入库、更新及删除，请见DBManager内的三个方法，分别是insert、update、delete及flush方法。也可以见下面的例子。
- 魔术方法统一用\_request\_（开头）+请求变量名称。

Code Example:
=============

[](#code-example)

```
define("MONGO_HOST", "mongodb://127.0.0.1");
define("MONGO_DB", "test");

require __DIR__ . "/../vendor/autoload.php";
require __DIR__ . "/../src/DataSetIterator.php";
require __DIR__ . "/../src/DBManager.php";
require __DIR__ . "/../src/Data.php";
require __DIR__ . "/../src/DataSet.php";

class UserManager extends \rayful\MongoDB\DBManager
{

    /**
     * 返回本对象的数据库集合名称
     * @return string
     */
    protected function collectionName()
    {
        return "user";
    }
}

class User extends \rayful\MongoDB\Data
{
    public $username;

    public $password;

    public $truename;

    /**
     * 必须实现，一般返回这条数据的名称(可以是关乎这条数据的任何标识)，用于直接打印这个对象的时候将返回什么。
     * @return String
     */
    public function name()
    {
        return $this->truename;
    }

    /**
     * 声明数据库管理实例
     * @example return new ProductManager();    //是一个DBManager的子类实例
     * @return \DB\Mongo\DBManager
     */
    public function DBManager()
    {
        return new UserManager();
    }
}

class Users extends \rayful\MongoDB\DataSet
{

    /**
     * 声明迭代器返回的对象实例
     * @example return new Product();   //Product是Data的子类
     * @return \DB\Mongo\Data
     */
    protected function iterated()
    {
        return new User();
    }
}

//增
$User = new User();
$User->username = "kingmax";
$User->password = md5("123456");
$User->save();

//查
$User = new User(['username' => "kingmax"]);
print_r($User);

//改
$User->password = md5("1234567");
$User->save();

//快捷修改
$User->update(['$set' => ['truename' => '杨灵']]);
$User = new User(['username' => "kingmax"]);
print_r($User);

//删
$User->delete();
echo "Is exists? " . $User->isExists() ? "true" : "false";

//批量插入及查询
for ($i = 0; $i username = "user" . $i;
    $User->truename = "name" . $i;
    $User->insert();
}

$Users = new Users();
$Users->find(['username' => ['$in' => ['user1', 'user2', 'user3']]])->sort(['truename' => -1])->limit(2);
foreach ($Users as $User) {
    echo $User . "\n";
}

//批量删
echo "Removing ... \n";
$Users->remove();

//看看剩下来的
$Users = new Users();
echo "Remove left: " . $Users->count() . "\n";

//同样可以批量改
$Users->update(['$set' => ['truename' => 'kingmax New']]);
foreach ($Users as $User) {
    echo $User . " delete .. \n";
    $User->delete();
}

echo "total:" . $Users->count() . "\n";

//批量分批插入
$User1 = new User();
$User1->truename = "Leo";

$User2 = new User();
$User2->truename = "Mark";

$User = new User();
$User->username = "kingmax";
$User->save();

$User3 = new User(['username'=>'kingmax']);
$User3->truename = "杨灵";

$User4 = ['username'=>'soul'];
$User5 = ['_id'=>$User->_id, 'truename'=>'张三'];

$UserManager = new UserManager();
$UserManager->insert($User1);
$UserManager->insert($User2);
$UserManager->update($User3);
$UserManager->insert($User4);
$UserManager->update($User5);

$result = $UserManager->flush();

print_r($result);

$UserManager = new UserManager();
$UserManager->delete($User1);
$UserManager->delete($User2);
$UserManager->delete($User3);
$UserManager->delete($User4);

$result = $UserManager->flush();

print_r($result);
```

###  Health Score

30

—

LowBetter than 64% of packages

Maintenance20

Infrequent updates — may be unmaintained

Popularity11

Limited adoption so far

Community7

Small or concentrated contributor base

Maturity68

Established project with proven stability

 Bus Factor1

Top contributor holds 100% of commits — single point of failure

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

###  Release Activity

Cadence

Every ~62 days

Recently: every ~86 days

Total

7

Last Release

2882d ago

Major Versions

1.1.1 → 2.02017-08-22

### Community

Maintainers

![](https://www.gravatar.com/avatar/1412a217896637f39725a032a9fc9c77c8feeb843daa3b5b696b8eb0fef53a94?d=identicon)[kingmaxyang](/maintainers/kingmaxyang)

---

Top Contributors

[![kingmaxyang](https://avatars.githubusercontent.com/u/4504653?v=4)](https://github.com/kingmaxyang "kingmaxyang (2 commits)")

### Embed Badge

![Health badge](/badges/rayful-db-manager2/health.svg)

```
[![Health](https://phpackages.com/badges/rayful-db-manager2/health.svg)](https://phpackages.com/packages/rayful-db-manager2)
```

###  Alternatives

[mongodb/laravel-mongodb

A MongoDB based Eloquent model and Query builder for Laravel

7.1k7.2M71](/packages/mongodb-laravel-mongodb)[doctrine/mongodb-odm

PHP Doctrine MongoDB Object Document Mapper (ODM) provides transparent persistence for PHP objects to MongoDB.

1.1k23.3M302](/packages/doctrine-mongodb-odm)[alcaeus/mongo-php-adapter

Adapter to provide ext-mongo interface on top of mongo-php-library

46412.3M73](/packages/alcaeus-mongo-php-adapter)[moloquent/moloquent

A MongoDB based Eloquent model and Query builder for Laravel (Moloquent)

120114.6k7](/packages/moloquent-moloquent)[doesntmattr/mongodb-migrations

Managed Database Migrations for MongoDB

23598.7k1](/packages/doesntmattr-mongodb-migrations)[facile-it/mongodb-bundle

Bundle service integration of official \[mongodb/mongo-php-library\](https://github.com/mongodb/mongo-php-library) driver library

38212.1k1](/packages/facile-it-mongodb-bundle)

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
