發現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)