最近幾個(gè)月ThinkPHP更新頻繁,體現(xiàn)了頂想公司對(duì)這個(gè)核心框架的重視,所以個(gè)人覺(jué)得廣大PHP代碼的編寫(xiě)者,應(yīng)該對(duì)這個(gè)框架要有信心,筆者將原來(lái)開(kāi)發(fā)的機(jī)房管理軟件的核心框架進(jìn)行了升級(jí),基本上沒(méi)有發(fā)現(xiàn)以前版本開(kāi)發(fā)的代碼與新版存在兼容性的問(wèn)題.
發(fā)現(xiàn),升級(jí)后代碼加載的速度有所提高,于是我順便改了下關(guān)聯(lián)模型的使用,ThinkPHP已經(jīng)支持多個(gè)數(shù)據(jù)表的模型關(guān)聯(lián),可是我修改后,總是提示系統(tǒng)找不到關(guān)聯(lián)操作,具體提示為“Model:relation您所請(qǐng)求的方法不存在,”難道ThinkPHP不支持關(guān)聯(lián)查詢了,應(yīng)該不會(huì)吧,于是從網(wǎng)上查找答案,發(fā)現(xiàn)了存在一個(gè)問(wèn)題原來(lái)是實(shí)例化模型應(yīng)該時(shí)有問(wèn)題,我用了M()方法,于是改成了D()方法來(lái)實(shí)例化模型.
可程序運(yùn)行還是提示“Model:relation您所請(qǐng)求的方法不存在!”仔細(xì)檢查,發(fā)現(xiàn)又存在一個(gè)問(wèn)題,沒(méi)有繼承 RelationModel,于是將類改為class NewsModel extends RelationModel,代碼如下:
- class SetclassModel extends RelationModel{
- protected $_link = array(
- 'User'=> array(
- 'mapping_type'=>BELONGS_TO,
- 'class_name'=>'user',
- 'foreign_key'=>'uid',
- 'mapping_name'=>'user',
- 'mapping_fields'=>username,
- 'as_fields'=>'username',
- ),
- );
- }
Action代碼如下:
- $set=D('news');
- $list=$news->relation(true)->select();
- dump($list);//測(cè)試list數(shù)組
可運(yùn)行后,問(wèn)題還是依舊,都被這段小代碼快整瘋了,仔細(xì)檢查應(yīng)該沒(méi)有什么問(wèn)題,于是去掉->relation(true),將代碼改成如下:
- $set=D('news');
- $list=$news->select();
- dump($list);//測(cè)試list數(shù)組
又能正常出現(xiàn) 數(shù)據(jù)集了,于是又到網(wǎng)上搜查了一下具體情況,有人說(shuō)不支持relation方法的操作了,終于有點(diǎn)灰心了.
后來(lái)仔細(xì)一想是不是大小寫(xiě)的原因,據(jù)說(shuō)ThinkPHP在linuxg下對(duì)大小寫(xiě)有時(shí)很敏感,即使win也可能存在這樣的問(wèn)題,可能和大小寫(xiě)有關(guān),仔細(xì)檢查,終于發(fā)現(xiàn)問(wèn)題了,原來(lái)M方法實(shí)例化模型時(shí)首字母大寫(xiě)與小寫(xiě)均不會(huì)出現(xiàn)問(wèn)題,D方法也是這樣,但是使用了關(guān)聯(lián)模型后,對(duì)大小寫(xiě)即使在WIN環(huán)境下也有所區(qū)別了.
看來(lái),以后寫(xiě)代碼,還得養(yǎng)成規(guī)范的習(xí)慣,不可隨意亂寫(xiě),雖然WIN環(huán)境下對(duì)大小寫(xiě)比較寬松,規(guī)范的語(yǔ)法還是便于閱讀,也更不容易出現(xiàn)這種莫名其妙的錯(cuò)誤,減少許多不必要的麻煩.
新聞熱點(diǎn)
疑難解答
圖片精選