#### db组件
swoolefy本身并没有封装mysql的orm,这里是fork了一个thinkphp5的`top-think/think-orm`这个数据库的orm,然后重新建立一个仓库-`bingcool/swoolefy-orm`。`bingcool/swoolefy-orm`主要是解决了一些静态变量的问题,以便适用于swoole环境。使用前必先安装bingcool/swoolefy-orm组件
~~~
composer require 'bingcool/swoolefy-orm:dev-master'
~~~
这里可能会提示说要求安装稳定的版本,那么安装1.2.*版本
~~~
composer require 'bingcool/swoolefy-orm:1.2.*'
~~~
* 配置
配置设置其实和tp的db操作基本一致
~~~
'components' => [
'db' => [
'class' => 'Swoolefy\Core\Db\Mysql',
'config' =>[
// 数据库类型
'type' => 'mysql',
// 服务器地址
'hostname' => '192.168.99.102',
// 数据库名
'database' => 'bingcool',
// 用户名
'username' => 'swoole',
// 密码
'password' => '123456',
// 端口
'hostport' => '3306',
// 连接dsn
// 'dsn' => '',
// 数据库连接参数
// 'params' => [],
// 数据库编码默认采用utf8
'charset' => 'utf8',
// 数据库表前缀
// 'prefix' => '',
// 数据库调试模式
'debug' => false,
// 数据库部署方式:0 集中式(单一服务器),1 分布式(主从服务器)
// 'deploy' => 0,
// 数据库读写是否分离 主从式有效
// 'rw_separate' => false,
// 读写分离后 主服务器数量
// 'master_num' => 1,
// 指定从服务器序号
// 'slave_no' => '',
// 是否严格检查字段是否存在
// 'fields_strict' => true,
// 数据集返回类型
'resultset_type' => 'collection',
// 自动写入时间戳字段
// 'auto_timestamp' => false,
// 时间字段取出后的默认时间格式
// 'datetime_format' => 'Y-m-d H:i:s',
// 是否需要进行SQL性能分析
// 'sql_explain' => false,
// Builder类
// 'builder' => '',
// Query类
// 'query' => '\\think\\db\\Query',
// 是否需要断线重连
'break_reconnect' => true,
],
// db组件完成实例化后的初始化配置函数执行
// 'func' => 'setConfig',
// 或者回调函数形式
'func'=>function() {
$this->setConfig();
},
],
]
~~~
在这里需要注意的是,'func'配置项支持闭包回调函数,可以调用当前组件类中的任何方法和属性,就像该闭包函数是属于当前类中函数那样使用即可。
在应用中操作
~~~
<?php
namespace App\Controller;
use Swoolefy\Core\Swfy;
use Swoolefy\Core\Application;
use Swoolefy\Core\ZModel;
use Swoolefy\Core\Controller\BController;
class MysqlController extends BController {
public function test() {
$db = Application::getApp()->db;
$result = $db->table('user')->find();
}
}
~~~
[thinkphp5.1的DB操作类](http://https://www.kancloud.cn/manual/thinkphp5_1/353999)
两者有以下差异:
| Tp的DB类 | swoolefy的DB组件 |
| --- | --- |
| Db::connect($config, $name) | Application::getApp()->db->connect($config, $name) |
| Db::table('user') | Application::getApp()->db->table('user') |
| Db::query() | Application::getApp()->db->query() |
- 欢迎使用swoolefy
- 环境说明
- 开发部署
- 安装
- 创建应用
- 启动|停止服务
- nginx代理
- 创建Controller
- 应用结构
- App应用对象
- Event请求处理
- 超全局管理
- 热更新
- inotify实现worker进程热重启
- http服务
- 应用层配置
- 协议层配置
- 路由规则
- 控制器
- 数据模型
- websocket服务
- 应用层配置
- 协议层配置
- 数据封装格式
- 控制器
- 数据模型
- 二进制数据处理
- rpc服务
- 应用层配置
- 协议程配置
- 数据包协议格式
- 服务控制器
- 服务数据模型
- udp服务
- 应用层配置
- 协议层配置
- 数据包封装格式
- 控制器
- 存在问题
- 常用组件
- log
- view
- session
- cache(redis)
- db(mysql)
- mongodb
- 其他服务管理
- 自定义进程管理
- 异步任务管理
- 内存表管理
- 定时器管理
- 异常捕捉处理
- 进程池管理
- systerm采集进程服务