> 推荐大家严格按照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开发者账户
- 多主题开发
- 新建主题
- 目录结构
- 模板变量
- 定制安装部署