PHPackages                             mongdch/mon-orm - 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. mongdch/mon-orm

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

mongdch/mon-orm
===============

Mysql database ORM for PHP

2.5.9(2y ago)739824Apache-2.0PHPPHP &gt;=5.6.0

Since Jul 3Pushed 2y ago2 watchersCompare

[ Source](https://github.com/MonGDCH/mon-orm)[ Packagist](https://packagist.org/packages/mongdch/mon-orm)[ Docs](http://gdmon.com/)[ RSS](/packages/mongdch-mon-orm/feed)WikiDiscussions master Synced 3d ago

READMEChangelog (10)Dependencies (1)Versions (39)Used By (4)

Mon-ORM
=======

[](#mon-orm)

基于PHP5.6+，Mysql的便捷式ORM框架，主要实现：

- 链式操作生成SQL语句
- 事务支持
- 模型支持查询场景、数据自动完成(设置器，获取器)
- 自动参数绑定
- 支持断线重连
- 支持查询事件监听
- 支持自动分布式部署读写分离

安装
--

[](#安装)

```
composer require mongdch/mon-orm

```

文档Wiki
------

[](#文档wiki)

[查看文档](/doc/Home.md)

版本更新日志
------

[](#版本更新日志)

[查看日志](./CHANGELOG.md)

使用
--

[](#使用)

```
// 数据库配置
return [
    // 默认使用的链接配置
    'default'   => [
        // 数据库类型，只支持mysql
        'type'          => 'mysql',
        // 服务器地址
        'host'          => '127.0.0.1',
        // 数据库名
        'database'      => 'test',
        // 用户名
        'username'      => 'root',
        // 密码
        'password'      => 'root',
        // 端口
        'port'          => '3306',
        // 数据库连接参数
        'params'        => [],
        // 数据库编码默认采用utf8
        'charset'       => 'utf8mb4',
        // 返回结果集类型
        'result_type'   => PDO::FETCH_ASSOC,
        // 是否开启读写分离
        'rw_separate'   => true,
        // 查询数据库连接配置，二维数组随机获取节点覆盖默认配置信息
        'read'          => [
            [
                // 用户名
                'username'  => 'root',
                // 密码
                'password'  => '123456',
                // 端口
                'port'      => '3307',
            ],
            [
                // 数据库名
                'database'  => 'demo',
                // 密码
                'password'  => '654321',
                // 端口
                'port'      => '3308',
            ]
        ],
        // 写入数据库连接配置，同上，开启事务后，读取不会调用查询数据库配置
        'write'         => [
            [
                // 服务器地址
                'host'      => '127.0.0.1',
                // 数据库名
                'database'  => 'test',
                // 用户名
                'username'  => 'root',
                // 密码
                'password'  => 'root',
                // 端口
                'port'      => '3306',
            ]
        ]
    ],
    // 测试数据库连接配置
    'test'      => [
        // 数据库类型，只支持mysql
        'type'          => 'mysql',
        // 服务器地址
        'host'          => '127.0.0.1',
        // 数据库名
        'database'      => 'test',
        // 用户名
        'username'      => 'root',
        // 密码
        'password'      => 'root',
        // 端口
        'port'          => '3306',
        // 数据库连接参数
        'params'        => [],
        // 数据库编码默认采用utf8
        'charset'       => 'utf8mb4',
        // 返回结果集类型
        'result_type'   => PDO::FETCH_ASSOC,
        // 是否开启读写分离
        'rw_separate'   => true,
        // 是否开启读写分离
        'rw_separate'   => false,
        // 查询数据库连接配置，二维数组随机获取节点覆盖默认配置信息
        'read'          => [],
        // 写入数据库连接配置，同上，开启事务后，读取不会调用查询数据库配置
        'write'         => []
    ]
];
```

### Db类

[](#db类)

```
use mon\orm\Db;
// 基础配置信息
$config = [
	'host'     => '127.0.0.1',
	'database' => 'test',
	'username' => 'root',
	'password' => 'root',
	'port'     => '3306',
];

// 通过connect方法连接DB操作DB
Db::connect($config)->table('test')->select();
```

```
use mon\orm\Db;
$config = [
	'default' => [
		'host'     => '127.0.0.1',
		'database' => 'test',
		'username' => 'root',
		'password' => 'root',
		'port'     => '3306',
	]
];
// 全局设置默认配置信息
Db::setConfig($config);
Db::table('test a')->join('demo b', 'a.pid=b.id', 'left')->select();
Db::getLastSql();
```

### 模型

[](#模型)

定义模型

```
use mon\orm\Model;
class Test extends Model
{
	/**
	 * 模型默认操作表名
	 * @var string
	 */
	public $table = [模型操作的表名];

	/**
	 * 模型独立使用的配置信息
	 * @var array
	 */
	public $config = [模型独立使用的配置信息];

	/**
	 * 新增自动写入字段
	 * @var array
	 */
	protected $insert = ['create_time' => '', 'update_time'	=> '', 'status'	=> 1];

	/**
	 * 更新自动写入字段
	 * @var array
	 */
	protected $update = ['update_time'];

	/**
	 * 自动补全查询数据
	 * @var array
	 */
	protected $append = ['count', 'age'	=> 18,];

	/**
	 * 自动完成create_time字段
	 *
	 * @param mixed $val 默认值
	 * @param array  $row 列值
	 */
	protected function setCreateTimeAttr($val, $row = []){
		return $_SERVER['REQUEST_TIME'];
	}

	/**
	 * 自动完成update_time字段
	 *
	 * @param mixed $val 默认值
	 * @param array  $row 列值
	 */
	protected function setUpdateTimeAttr($val, $row = []){
		return $_SERVER['REQUEST_TIME'];
	}

	/**
	 * 自动完成格式化获取create_time结果
	 *
	 * @param  mixed $val [description]
	 * @param  array  $row [description]
	 * @return string
	 */
	protected function getCreateTimeAttr($val, $row){
		return date('Y-m-d H:i:s', $val);
	}

	/**
	 * 自动完成格式化append中count字段的数据
	 * @param  mixed $val [description]
	 * @param  array $row [description]
	 * @return integer
	 */
	protected function getCountAttr($val, $row)
	{
		return count($row);
	}

	/**
	 * 测试查询场景
	 *
	 * @return \mon\orm\db\Query
	 */
	protected function scopeTest($query)
	{
		return $query->where('status', 1)->limit(3);
	}

	/**
	 * 测试sava方法
	 *
	 * @return array
	 */
	public function testScopee()
	{
		return $this->scope(function($query){
			return  $query->where('id', '>', 50);
		})->select();
	}
}
```

使用模型

```
// 调用结果Db类查询
$find = Test::where('id', 1)->find();

// 结合自动完成工具使用
$test = new Test;

// 新增
$test->save(['name' => mt_rand(1, 100)]);
// 新增返回自增ID
$test->save(['name' => 'get insert id'], null, 'id');

// 批量新增
$test->saveAll([['a' => 1], ['a' => 2]]);

// 修改
$test->save(['name' => 'hello complete'], ['id' => 45]);

// 场景使用，相当于前置查询
$test->scope('test')->save(['name'=>'test scope'], []);
$test->testScopee();

// 查询一条记录
$test->get(['id' => ['>', 52]]);
$test->scope('test')->get();

// 查询多条记录
$test->all(['status' => 1]);
$data = $test->scope('test')->where('id', 20)->all();
```

定义断线重连，默认断线不重连，开启断线重连将使用长链接的方式链接数据库

```
Db::reconnect(true);
```

##### 更多使用方式examples

[](#更多使用方式examples)

---

致谢
--

[](#致谢)

感谢您的支持和阅读，如果有什么不足的地方或者建议还请@我，如果你觉得对你有帮助的话还请给个star。

---

关于
--

[](#关于)

作者邮箱： 作者博客：

###  Health Score

34

—

LowBetter than 77% of packages

Maintenance20

Infrequent updates — may be unmaintained

Popularity19

Limited adoption so far

Community17

Small or concentrated contributor base

Maturity69

Established project with proven stability

 Bus Factor1

Top contributor holds 63.2% 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 ~53 days

Total

38

Last Release

903d ago

Major Versions

v1.0.2 → v2.0.02018-07-29

### Community

Maintainers

![](https://www.gravatar.com/avatar/f72e67ce10f7cfef428bc70ce1ec7411eb16bae10edc2cc5277b765284a46c39?d=identicon)[MonGDCH](/maintainers/MonGDCH)

---

Top Contributors

[![MonGDCH](https://avatars.githubusercontent.com/u/19282393?v=4)](https://github.com/MonGDCH "MonGDCH (43 commits)")[![monton-gif](https://avatars.githubusercontent.com/u/53856623?v=4)](https://github.com/monton-gif "monton-gif (25 commits)")

---

Tags

databaseormmysql

### Embed Badge

![Health badge](/badges/mongdch-mon-orm/health.svg)

```
[![Health](https://phpackages.com/badges/mongdch-mon-orm/health.svg)](https://phpackages.com/packages/mongdch-mon-orm)
```

###  Alternatives

[cycle/database

DBAL, schema introspection, migration and pagination

64690.9k31](/packages/cycle-database)

PHPackages © 2026

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