對(duì)于比較負(fù)復(fù)雜的業(yè)務(wù)邏輯,應(yīng)Db類(lèi)來(lái)操作數(shù)據(jù)庫(kù)就顯得力不從心。(業(yè)務(wù)邏輯距舉例:登錄是簡(jiǎn)單的業(yè)務(wù)邏輯,對(duì)比用戶名和密碼,但是要處理異地登錄和多終端登錄等業(yè)務(wù)邏輯的時(shí)候,用Db類(lèi)操作數(shù)據(jù)庫(kù)就不夠了)針對(duì)這種問(wèn)題的解決方案就是ORM。
因?yàn)橛肈b來(lái)操作數(shù)據(jù)庫(kù)返回的數(shù)據(jù)結(jié)構(gòu)是數(shù)組,針對(duì)這種數(shù)據(jù)結(jié)構(gòu)并沒(méi)有太多的方法對(duì)返回的數(shù)據(jù)進(jìn)行進(jìn)一步處理。而使用ORM思想,返回的數(shù)據(jù)結(jié)構(gòu)是一個(gè)對(duì)象,TP5框架在這個(gè)對(duì)象里面封裝了很多方法,用于對(duì)返回的數(shù)據(jù)進(jìn)行進(jìn)一步處理。
用Db操作數(shù)據(jù)庫(kù)最大的劣勢(shì)就是不能很好的包含業(yè)務(wù)邏輯,本質(zhì)上,model也是調(diào)用了Db類(lèi)來(lái)進(jìn)行數(shù)據(jù)庫(kù)的操作。
Db屬于數(shù)據(jù)庫(kù)訪問(wèn)層,Model不屬于數(shù)據(jù)庫(kù)訪問(wèn)層,它是建立在數(shù)據(jù)庫(kù)訪問(wèn)層之上的一個(gè)更加抽象的數(shù)據(jù)訪問(wèn)和業(yè)務(wù)邏輯層。
模型的使用流程如下:URL路徑傳遞參數(shù)給控制器,控制器將參數(shù)傳遞給模型,模型返回并處理數(shù)據(jù)在返回給客戶端。
使用模型,首先要保證模型層中的模型是模型,方法就是在模型中繼承think/Model類(lèi)。
采用:$banner = BannerModel::get($id);//BannerModel是模型,下面的get方法,get方法接收變量$id作為參數(shù)。