ThinkPHP使用技巧經驗分享之?

2017-03-21 1259 7 編輯:深圳網站建設 來源:互聯網

add方法返回主鍵(id)的值

在往數據表中添加數據時調用add方法,默認返回值就是剛添加的id值,就不用再去查詢了.

save方法返回值的判斷

在修改數據時,如果修改成功返回的是被修改的記錄數0,1,2,3......

ThinkPHP使用技巧經驗分享.jpg

注意:以下幾種情況返回 false,所以判斷更新失敗應使用 if(false === $this->save())

(1)更新的數據為空

(2)_before_update()方法返回false

(3)沒有任何更新條件(沒有定義where()里的條件,或者保存的數據里沒有主鍵的值)

查詢后置方法詳解

如_after_select,_after_insert,_after_update,_after_delete,_after_find等

巧妙地利用這些方法可以簡化開發

用_after_select(&$result,$options)舉例:

參數:$result,這是select出的結果數組。注意這里是一個引用傳參,也就是說我們可以直接改變傳遞過來的值而不需要返回

$options,這是查詢的條件,也就是where()里面的條件

假如你查詢出的數據有time這一字段,并且是以int型保存的,那么可以在這個方法里進行時間格式化的操作

protected function  _after_select(&$result,$options)

   foreach($result as $key=>$value){

         $result[$key]['time'] = date('Y-m-d H:i:s', $value['time']);

   }

}

這樣就不需要每次在模板上顯示的時候,再用函數來處理了

同樣地,可以用_after_insert來代替關聯操作,在新增完一條數據后再根據參數更新一些關聯的數據

當然,除了后置方法,還有前置方法。可以用來代替一些復雜的數據驗證或者進行數據的預處理,類似于自動完成和自動驗證

protected function _before_insert(&$data,$options) {

        //對新增前的數據進行處理

        foreach ($data as $key=>$value){

            $value['status']   =   1;//類似于自動完成

            if($value['age'] > 100){//類似于自動驗證

                  return false;

            }

        }

    }

復制代碼

最后,有幾點需要注意的:1,這些方法都是必須寫在model里面的

2,這些方法所接收的參數,有些是引用傳參,有些是傳值,得注意區分。具體可參考手冊

3,在后置方法里不需要返回值。而前置方法里可以返回 false 來阻止進行下一步的操作

打印sql語句

$User = D('User');

$User->select();

echo $User->getLastSql();或者echo $User->_sql();

獲取最后執行的sql語句,方便查看調試

跨模板主題調用模板

假如Tpl下有new主題,該主題下有User文件夾,文件夾下有index.html

你當前的模板主題是Tpl下的default,那么可以用$this->display('new:User:index');

或者用全路徑輸出$this->display('./Tpl/new/User/index.html');

路由規則^符號的使用

這個符號在手冊中沒有提及,但是作用卻不可忽視。

用法:'user/^getlist|tag' => 'user/index'

作用:在user模塊中,除了getlist和tag方法,其他存在的方法全部指向index方法。參數之間用|間隔

這樣可以屏蔽一些不想讓用戶訪問到但是又必須定義成public的方法

專業的網站建設公司,深正互聯,如您有網站營銷需求,請您關注我們,或者致電13828884598

本站文章均為深正網站建設摘自權威資料,書籍,或網絡原創文章,如有版權糾紛或者違規問題,請即刻聯系我們刪除,我們歡迎您分享,引用和轉載,但謝絕直接搬磚和抄襲!感謝...
關注深正互聯
七星彩头尾