免费视频淫片aa毛片_日韩高清在线亚洲专区vr_日韩大片免费观看视频播放_亚洲欧美国产精品完整版

打開(kāi)APP
userphoto
未登錄

開(kāi)通VIP,暢享免費(fèi)電子書等14項(xiàng)超值服

開(kāi)通VIP
YII框架分析筆記4:ar模型和db
YII中實(shí)現(xiàn)兩種類型的模型,分別是表單模型和活動(dòng)記錄。在持久化數(shù)據(jù)方面,YII只實(shí)現(xiàn)了活動(dòng)記錄,對(duì)于復(fù)雜的數(shù)據(jù)關(guān)系可以用框架提供的DAO來(lái)自己寫model,對(duì)應(yīng)集成doctrine這樣的ORM還沒(méi)有仔細(xì)研究過(guò)。
ar模型
框架中的model是CModel子類,CModel主要是一些驗(yàn)證與錯(cuò)誤處理,并實(shí)現(xiàn)迭代器和數(shù)組訪問(wèn)接口,活動(dòng)記錄模型CActiveRecord是AR模型的基類。
每個(gè)AR類代表一個(gè)單獨(dú)的數(shù)據(jù)表,一個(gè)AR實(shí)例則代表那個(gè)表中的一行。AR是一種對(duì)象關(guān)系映射(ORM)的設(shè)計(jì)模式,它負(fù)責(zé)數(shù)據(jù)持久化. 封裝了數(shù)據(jù)庫(kù)CURD操作,同時(shí)它是一種領(lǐng)域模型(Domain Model), 封裝了部分業(yè)務(wù)邏輯。一個(gè)AR類中包括了表結(jié)構(gòu)(Table Schema),約束以及 CURD
實(shí)例化model有兩種方法,直接new一個(gè)新的實(shí)例,或者用靜態(tài)方法mode(),后者與前者的區(qū)別是略過(guò)構(gòu)造函數(shù)執(zhí)行的代碼(主要是避免元數(shù)據(jù)的多次獲取),用靜態(tài)方法mode()創(chuàng)建ar對(duì)象經(jīng)過(guò)一下步驟:[php] view plaincopy
//$model::model($class)
$model=self::$_models[$className]=new $className(null);//創(chuàng)建一個(gè)mode實(shí)例
new CActiveRecordMetaData($model)//創(chuàng)建元數(shù)據(jù)類
//1、獲取表模式實(shí)例
$model->getDbConnection() //獲取數(shù)據(jù)庫(kù)連接
->getSchema()//獲取數(shù)據(jù)庫(kù)schema
->getTable($tableName)//獲取表shema
->loadTable()//獲取表對(duì)象
->findColumns()//獲取表中列對(duì)象以及其中的約束
->findConstraints()//獲取表約束(代碼實(shí)際上是外鍵關(guān)系)
//2、主鍵配置
//3、添加關(guān)系(關(guān)系包括BELONGS_TO、HAS_ONE、HAS_MANY、MANY_MANY、STAT)
$model->attachBehaviors($model->behaviors());//添加行為
上面流程下來(lái)會(huì)遇到一個(gè)問(wèn)題,每一次創(chuàng)建model都會(huì)執(zhí)行"SHOW COLUMNS FROM $tableName"和"SHOW CREATE TABLE $tableName"的查詢,在高并發(fā)下會(huì)影響性能??梢栽谥髋渲梦募械臄?shù)據(jù)庫(kù)配置中添加schemaCachingDuration和schemaCacheID的配置來(lái)緩存數(shù)據(jù)庫(kù)schema,前者是設(shè)置緩存的時(shí)間,后者是緩存組件的id,但緩存帶來(lái)的問(wèn)題是修改數(shù)據(jù)庫(kù)中表結(jié)構(gòu)不能立即生效,所以在生產(chǎn)環(huán)境下寫一個(gè)刷新緩存的腳本是又必要的。
DAO
ar模型帶來(lái)的好處是將開(kāi)發(fā)中SQL語(yǔ)句的編寫減到最小,ar模型既封裝了數(shù)據(jù)庫(kù)記錄的狀態(tài)和持久化到數(shù)據(jù)庫(kù)的訪問(wèn)方法,也封裝了業(yè)務(wù)邏輯,這在關(guān)系不是很復(fù)雜的應(yīng)用中帶來(lái)的好處顯而易見(jiàn),但如果數(shù)據(jù)庫(kù)關(guān)系復(fù)雜,業(yè)務(wù)邏輯復(fù)雜,有必要將對(duì)數(shù)據(jù)的操作單獨(dú)提出來(lái),YII中的DAO就是將業(yè)務(wù)邏輯和數(shù)據(jù)交換分開(kāi),也降低了業(yè)務(wù)和數(shù)據(jù)庫(kù)的耦合性。
YII中DAO基于PDO,統(tǒng)一的接口可以訪問(wèn)不同的數(shù)據(jù)庫(kù)管理系統(tǒng)。在框架中CDbConnection、CDbCommand、CdbDataReader、CDbTransaction類分別管了數(shù)據(jù)量的連接、命令、讀取和事務(wù)。
YII還對(duì)數(shù)據(jù)庫(kù)的schema進(jìn)行映射,一個(gè)數(shù)據(jù)庫(kù)是對(duì)應(yīng)一個(gè)對(duì)象,一個(gè)表對(duì)應(yīng)一個(gè)對(duì)象,一列對(duì)應(yīng)一個(gè)對(duì)象,這些對(duì)象分別封裝其對(duì)應(yīng)schema的一些操作。
本站僅提供存儲(chǔ)服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊舉報(bào)。
打開(kāi)APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
淺談model, orm, dao和active record的區(qū)別
數(shù)據(jù)模型
1.模型介紹
Yii: 多數(shù)據(jù)庫(kù)配置和操作
一篇SSH框架的應(yīng)用介紹
技術(shù)文章-Spring的巧妙之處
更多類似文章 >>
生活服務(wù)
分享 收藏 導(dǎo)長(zhǎng)圖 關(guān)注 下載文章
綁定賬號(hào)成功
后續(xù)可登錄賬號(hào)暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服