> 推薦大家嚴格按照MVC分層進行項目的開發工作,這樣不但有利于后期增加API手機客戶端接口,同時也便于項目的后期優化升級。
### 數據模型
模塊開發時數據表有一個約定:以模塊名開頭。
如您正在開發問答模塊,那么您的數據表應該類似下:
ly_ask_category
ly_ask_post
ly_ask_comment
ly_ask_mark
與之對應的模型應該命名如下:
CategoryModel.class.php
PostModel.class.php
CommentModel.class.php
MarkModel.class.php
問:此時ThinkPHP資深玩家會提出問題:當用D方法去實例化這樣的模型時,TP會報錯說找不到對應的數據表。
答:因為TP默認是完全按照模型的名稱去查詢數據庫的,以Category為例,D('Category')是去查找ct_category這張表,但是我們并沒有一個這樣的數據表,但是我們有ct_ask_category,那么解決辦法就是利用模型的$tableName手動指定數據表名稱,如下所示:
其實這里出現這樣的處理原因是模塊的控制器和模型在文件系統級別上可以通過文件夾來防止沖突,但是在數據庫層面確智能通過前綴來防止沖突。因此這里出現了這樣的解決辦法。
```php
// +----------------------------------------------------------------------
/**
* 默認模型
* @author jry <598821125@qq.com>
*/
namespace Test\Model;
use Think\Model;
class DefaultModel extends Model {
/**
* 數據庫真實表名
* 一般為了數據庫的整潔,同時又不影響Model和Controller的名稱
* 我們約定每個模塊的數據表都加上相同的前綴,比如微信模塊用weixin作為數據表前綴
* @author jry <598821125@qq.com>
*/
protected $tableName = 'test_default';
/**
* 自動驗證規則
* @author jry <598821125@qq.com>
*/
protected $_validate = array(
array('title', 'require', '標題不能為空', self::MUST_VALIDATE, 'regex', self::MODEL_BOTH),
array('content', 'require', '內容不能為空', self::MUST_VALIDATE, 'regex', self::MODEL_BOTH),
);
/**
* 自動完成規則
* @author jry <598821125@qq.com>
*/
protected $_auto = array(
array('create_time', NOW_TIME, self::MODEL_INSERT),
array('update_time', NOW_TIME, self::MODEL_BOTH),
array('sort', '0', self::MODEL_INSERT),
array('status', '1', self::MODEL_INSERT),
);
}
```
- 簡介
- 環境要求
- 安裝系統
- 目錄結構
- 常見問題
- 基礎知識
- 編輯器
- 前端規范
- 前端框架文檔
- Builder教程
- Builder的來歷
- ListBuilder使用
- setMetaTitle
- addTopButton
- setSearch
- addSearchItem
- setTabNav
- addTableColumn
- setTableDataList
- setTableDataListKey
- setTableDataPage
- addRightButton
- alterTableData
- setExtraHtml
- setTemplate
- FormBuilder使用
- setMetaTitle
- setTabNav
- setExtraItems
- setPostUrl
- addFormItem
- setFormData
- setExtraHtml
- setAjaxSubmit
- setTemplate
- 擴展FormBuilder
- 模塊開發
- 創建模塊
- 描述文件
- 模型( M )
- 模版( V )
- 控制器( C )
- API接口
- 核心模塊
- 文件上傳
- 微信小程序模塊
- 注冊登陸接口
- 錢包模塊
- 統一支付
- Cms模塊
- 幻燈片接口
- 文檔列表接口
- 文檔詳情接口
- 發表評論接口
- 評論列表接口
- 收藏的文檔接口
- 收藏接口
- 分類列表接口
- IM模塊
- 發送消息接口
- 最近聊天列表接口
- 查詢新消息接口
- 插件相關
- 短信插件
- 支付插件
- 支付寶支付
- 微信支付
- 站群模塊
- 模板開發
- 準備工作
- 目錄結構
- 數據調用
- 專題
- 插件開發
- 圖片顯示
- 獲取用戶信息
- 判斷用戶登陸
- 表單提交AjaX
- 文件上傳
- 2.0兼容寫法
- 模板標簽
- 核心模塊
- Cms模塊
- 欄目分類調用
- Cordova
- 配置跨域支持
- 本地開發調試教程
- 打包成apk和ipa
- 自定義APP信息
- 常見問題
- 申請Apple開發者賬戶
- 多主題開發
- 新建主題
- 目錄結構
- 模板變量
- 定制安裝部署