rayswoole/think-orm

think-orm协程化版本, 仅在swoole协程环境使用

2.2.59 2023-03-11 06:29 UTC

This package is auto-updated.

Last update: 2024-04-11 09:01:40 UTC


README

fork in ThinkORM

基于PHP7.1+ 和PDO实现的ORM,支持多数据库,2.0版本主要特性包括:

  • 基于PDO和PHP强类型实现
  • 支持原生查询和查询构造器
  • 自动参数绑定和预查询
  • 简洁易用的查询功能
  • 强大灵活的模型用法
  • 支持预载入关联查询和延迟关联查询
  • 支持多数据库及动态切换
  • 支持MongoDb
  • 支持分布式及事务
  • 支持断点重连
  • 支持JSON查询
  • 支持数据库日志
  • 支持PSR-16缓存及PSR-3日志规范

安装

composer require rayswoole/think-orm

文档

连接池配置

可以在onStart直接配置
每个worker进程都会生成同等配置的进程池, 请根据worker数量动态调整
//初始化连接配置
$dbConfig = new \rayswoole\orm\pool\DbPoolConfig();
//设置最小连接数
$dbConfig->withMin(5);
//设置最大连接数
$dbConfig->withMax(20);
//设置定时器执行频率(毫秒),创建最小进程、回收空闲进程
$dbConfig->withIntervalTime(15*1000)
//设置连接可空闲时间
$dbConfig->withIdleTime(10)
//获取连接池对象超时时间, 如果连接池占满在指定时间无法释放新的连接, 将输出Exception, 需要自行捕获
$dbConfig->withTimeout(3.0)

//数据库配置, 参考https://www.kancloud.cn/manual/think-orm/1257999
$dbConfig->withExtraConf('数据库数组结构')

//初始化连接池
\rayswoole\orm\facade\Db::init($dbConfig);

//可设置项
//设置log日志,必须继承Psr\Log\LoggerInterface接口(orm自带)
Db::setLog($Logger);
//设置缓存,用于ORM连贯操作`$Db->cache()`,必须继承Psr\SimpleCache\CacheInterface接口
Db::setCache($Cache);

使用

use rayswoole\orm\facade
// table方法必须指定完整的数据表名
Db::table('think_user')->where('id', 1)->find();
// 如果设置了数据表前缀(prefix)参数的话 也可以使用
Db::name('user')->where('id', 1)->find();

//注意: 非协程环境使用必须主动释放连接(协程环境内会自动释放)
Db::close();

// 模型写法
use rayswoole\orm
class userModel extends Model{
    protected $name = 'test'; //指定数据库,不指定会自动设置为test_model
}
$model = new userModel();
$model->where('id', 1)->find();

具体语法详细参考 ThinkORM开发指南