swoft 學習筆記之資料庫配置與實體定義

2021-09-26 14:29:49 字數 3832 閱讀 6744

return

['db'

=>

['class'

=> database:

:class

,'dsn'

=>

'mysql:dbname=xlxd;host=192.168.10.10;port=3306'

,'username'

=>

'root'

,'password'

=>'',

'charset'

=>

'uth8mb4'],

];/** class 指定當前 bean容器使用哪個乙個類 當然你也可以指定自己實現的database類

dsn pdo需要使用的連線配置資訊

username 資料登入使用者名稱

password 資料庫登入密碼

charset 資料庫字符集

*/

collation 設定指定資料集如何排序

timezone 設定時區設定

modes 設定連線模式(可以是一維陣列,也可以是英文逗號分割的 modes)

strict 設定獲取查詢以啟用嚴格模式(實際上也是設定modes配置)

fetchmode 設定 pdo 返回的型別 預設的連線池返回的型別為 fetch_assoc 也就是陣列方式

/**

* 預設的pdo連線選項。當然你可以選擇替換它

** @var array

*/$options=[

\pdo::

attr_case

=> \pdo::

case_natural

, \pdo::

attr_errmode

=> \pdo::

errmode_exception

, \pdo::

attr_oracle_nulls

=> \pdo::

null_natural

, \pdo::

attr_stringify_fetches

=>

false

, \pdo::

attr_emulate_prepares

=>

false

, \pdo::

attr_errmode

=> \pdo::

errmode_exception,]

;

預設的db.pool連線池的db類查詢查詢操作,返回的是陣列。自定義的db連線池如果也需要返回陣列,需要設定fetchmode引數 為 pdo::fetch_assoc,否則返回是的 stdclass 物件

'db'

=>

['class'

=> database:

:class

,'dsn'

=>

'mysql:dbname=swoft;host=127.0.0.1'

,'username'

=>

'root'

,'password'

=>

'123456'

,'charset'

=>

'utf8mb4'

,'prefix'

=>

't_'

,'options'

=>

[ \pdo::

attr_case

=> \pdo::

case_natural,]

,'config'

=>

['collation'

=>

'utf8mb4_general_ci'

,'strict'

=>

false

,'timezone'

=>

'+8:00'

,'modes'

=>

'no_engine_substitution,strict_trans_tables'

,'fetchmode'

=>

pdo:

:fetch_assoc,]

,],

writes 主庫配置 執行create update delete 操作的時候會從連線池 隨機選擇主庫節點執行

reads 從庫配置 read 操作使用缺省會從連線池 隨機選擇乙個從庫節點執行

return

['writes'

=>[[

'dsn'

=>

'mysql:dbname=swoft;host=127.0.0.1'

,'username'

=>

'root'

,'password'

=>

'123456',]

,],'reads'

=>[[

'dsn'

=>

'mysql:dbname=swoft;host=127.0.0.1'

,'username'

=>

'root'

,'password'

=>

'123456',]

,],]

db 的連線是通過 連線池建立和釋放的,通過connectionmanager類來管理連線,建立的為短鏈結 操作執行失敗會重試一次

return

['db.pool2'

=>

['class'

=> \swoft\db\pool::

class

,'database'

=> \bean

('db2'),

'minactive'

=>10,

'maxactive'

=>20,

'maxwait'

=>0,

'maxwaittime'

=>0,

'maxidletime'

=>60,

],]/**

class 是預設的 pool 物件 你可以更具官方的自己繼承實現,然後換成自己 的 pool 類名就可以了

database 驅動的資料庫物件 是讀 & 寫連線配置的

minactive 連線池需要維持的連線數

maxactive 連線池最大保持的連線數

maxwait 連線池最多等待連線數, 如果沒有限制為0(預設)

maxwaittime 連線最大等待時間,單位秒,如果沒有限制為0(預設)

maxidletime 連線最大空閒時間,單位秒

*/

定義實體
乙個實體類對應一張資料庫的表結構,乙個實體物件代表了表的一行資料記錄

prop 只是為字段設定乙個別名,只有在呼叫toarray的時候才會被轉換。這樣能隱藏資料庫真實的字段。使用where等子句,需要使用資料庫字段

所有字段屬性,必須要有getter和setter方法,你可以使用phpstorm 快捷鍵 ctrl+n,它會更具屬性 快速生成 getter和setter

若表字段有下劃線,類屬性均定義為 小駝峰 寫法 例: 字段 user_name 則屬性寫為 $username

2.x 去掉了 type 屬性 現在會使用 屬性上定義的 @var 註解定義的第乙個型別,決定了返回值型別,底層會強轉型別

Swoft之MySQL資料庫使用

資料庫訪問沒啥好說的,按官方文件來就好了 result query table 表名 where id 1 limit 1 get getresult 表名可以用實體類也可以用字串,用字串帶上表字首,實體類需要use引入 result query table user class where id ...

swoft速學 資料庫配置 實體定義

預設是給出的主從配置,這裡暫不考慮主從,config properties db.php 修改如下 return master name master uri 127.0.0.1 3306 test?user root password root charset utf8mb4 minactive ...

swoft學習筆記之response篇

響應物件 response響應物件 response 為 swoft http message response 檢視 response 物件原始碼,檔案路徑為 vendor swoft http message src response.php class response implements ...