企业🤖AI智能体构建引擎,智能编排和调试,一键部署,支持私有化部署方案 广告
#### 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() |