mongdch/mon-orm
Composer 安装命令:
composer require mongdch/mon-orm
包简介
Mysql database ORM for PHP
README 文档
README
基于PHP5.6+,Mysql的便捷式ORM框架,主要实现:
- 链式操作生成SQL语句
- 事务支持
- 模型支持查询场景、数据自动完成(设置器,获取器)
- 自动参数绑定
- 支持断线重连
- 支持查询事件监听
- 支持自动分布式部署读写分离
安装
composer require mongdch/mon-orm
文档Wiki
版本更新日志
使用
// 数据库配置 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类
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
致谢
感谢您的支持和阅读,如果有什么不足的地方或者建议还请@我,如果你觉得对你有帮助的话还请给个star。
关于
作者邮箱: 985558837@qq.com 作者博客: http://gdmon.com
mongdch/mon-orm 适用场景与选型建议
mongdch/mon-orm 是一款 基于 PHP 开发的 Composer 扩展包,目前已累计 398 次下载、GitHub Stars 达 7, 最近一次更新时间为 2018 年 07 月 03 日, 在 PHP 生态内属于活跃度较高的组件。
它主要适用于以下技术方向: 「database」 「orm」 「mysql」 「数据库」 等业务场景。在实际项目中,围绕这些方向常见需要落地的问题包括:接口对接、性能调优、并发安全、与既有框架(Laravel / ThinkPHP / Yii / Webman 等)的兼容适配,以及生产环境的日志埋点与稳定性保障。
我们在过去多个企业项目中使用过 mongdch/mon-orm 或与其功能相近的方案,如果你在选型或落地过程中遇到问题,例如 版本兼容、二次改造、私有化封装、与内部系统对接、生产 BUG 排查,欢迎联系我们协助评估。
基于 mongdch/mon-orm 在你已有业务上做功能扩展、字段裁剪、UI 适配、与内部账号 / 权限 / 日志系统的深度对接。
线上偶发问题、内存泄漏、慢查询、并发异常等排查修复;针对高流量场景做缓存、队列、索引层面的调优。
承接完整的项目从需求 → 设计 → 开发 → 上线 → 长期运维;也可按月提供技术保姆服务。
与 mongdch/mon-orm 相关的其它包
同方向 / 同关键字的高下载量 PHP Composer 包推荐,方便对比选型:
Dibi is Database Abstraction Library for PHP
Kinikit - PHP Application development framework MVC component
Store your language lines in the database, yaml or other sources
PHP Database ORM for Symfony1. Do NOT use for new projects: please move to a newest Symfony release and Doctrine2
A package for automatically encrypting and decrypting Eloquent attributes in Laravel 5.5+, based on configuration settings.
A PSR-7 compatible library for making CRUD API endpoints
统计信息
- 总下载量: 398
- 月度下载量: 0
- 日度下载量: 0
- 收藏数: 9
- 点击次数: 9
- 依赖项目数: 4
- 推荐数: 0
其他信息
- 授权协议: Apache-2.0
- 更新时间: 2018-07-03