#### 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://http://www.hmoore.net/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采集進程服務