發現ThinkPHP裡面隱藏了幾個有用的方法

發表於2019-05-11

發現ThinkPHP裡面隱藏了幾個有用的方法, model層裡面有幾個很有用的方法並沒有出現在手冊裡, 下面我列舉一些.



1.  _after_find  和  _after_select:查詢成功的回撥方法
    用法: 
    在自定義的model中重寫
class ArticleModel extends Model {

    protected function _after_find(&$data, $option) {
        switch ($data['status']) {
            case -2:
                $data['status_text'] = '待稽核';
                break;
            case -1:
                $data['status_text'] = '已刪除';
                break;
            case 0:
                $data['status_text'] = '禁用';
                break;
            case 1:
                $data['status_text'] = '正常';
                break;
        }
    }

    protected function _after_select(&$resultSet,$options) {
        foreach ($resultSet as &$data) {
            $this->_after_find($data, $options);
        }
    }
}

這樣在使用的時候, 你用
$list = D('Article')->select();

$info = D('Article')->find($id);

就會自動根據status欄位新增status_text欄位

還有一下方法, 大家可以自己測試

2. _after_delete , _before_delete
        : 在刪除操作之後 或 之前, 根據資料做一些操作 (如: 刪除分類的時候 同時刪除分類下的文章)
3. _after_insert , _before_insert
        : 在插入之後 或 之前, 根據資料做一些操作 (如: 插入文章成功 自動讓分類統計+1)
4. _after_update , _before_update
    : 在更新之後 或 之前, 根據資料做一些操作 (如: 重新計算分類文章總數)
評論(6)

相關文章