# 模型
>模型(Model) - 程序员编写程序应有的功能(实现算法等等)、数据库专家进行数据管理和数据库设计(可以实现具体的功能).
在 `MVC` 组件的互动中,
`模型(Model)` 用于封装与应用程序的业务逻辑相关的数据以及对数据的处理方法。`Model` 有对数据直接访问的权力,例如对数据库的访问。 `Model` 不依赖 `View` 和 `Controller`,也就是说, `Model` 不关心它会被如何显示或是如何被操作. 但是 `Model` 中数据的变化一般会通过一种刷新机制被公布。为了实现这种机制,那些用于监视此 `Model` 的 `View` 必须事先在此 `Model` 上注册,从而,View 可以了解在数据 `Model` 上发生的改变。 (比较:观察者模式 (软件设计模式))
在本书中,主要使用 `Think-ORM` 与数据库进行交互.
## 创建 模型文件
键入命令:
~~~~ shell
/* make:model 创建 模型文件 */
php think make:model user/User
~~~~
完成后,打开新建的 模型文件 `application/user/model/User.php`:
可以看到默认生成的 模型文件 已经为我们创建好了 命令空间、继承 等操作.
## 约定成俗的 表名
在实际的模型处理当中,`Think-ORM` 会根据 模型文件名 自动找到 表名 进行操作.
默认情况下,会使用类的「下划线命名法」与「复数形式名称」来作为数据表的名称生成规则。如:
* User 对应 users 表
* BlogList 对应 blog_list 表
因此 `Think-ORM` 将会假设模型储存在对应的表中,如果你需要手动指定数据表,可以通过 `$table` 来指定:
~~~~ php
/* 指定 auths 表 */
protected $table = 'auths';
~~~~
## 约定编程
>约定编程(convention over configuration),是一种软件设计范式,旨在减少软件开发人员需做决定的数量,获得简单的好处,而又不失灵活性.
本质是说,开发人员仅需规定应用中不符约定的部分。例如,如果模型中有个名为 `Sale` 的类,那么数据库中对应的表就会默认命名为 `sales`,只有在偏离这一约定时,例如将该表命名为 `products_sold`, 才需写有关这个名字的配置.
如果您所用工具的约定与你的期待相符,便可省去配置;反之,你可以配置来达到你所期待的方式.
- 第一章. 基础信息
- 1.1 序言
- 1.2 关于作者
- 1.3 本书源码
- 1.4 反馈纠错
- 1.5 安全指南
- 1.6 捐助作者
- 第二章. 开发环境布置
- 2.1 编辑器选用
- 2.2 命令行工具
- 2.3 开发环境搭建
- 2.4 浏览器选择
- 2.5 第一个应用
- 2.6 Git 工作流
- 第三章. 构建页面
- 3.1 章节说明
- 3.2 静态页面
- 3.3 Think 命令
- 3.4 小结
- 第四章. 优化页面
- 4.1 章节说明
- 4.2 样式美化
- 4.3 局部视图
- 4.4 路由链接
- 4.5 用户注册页面
- 4.6 集中视图
- 4.7 小结
- 第五章. 用户模型
- 5.1 章节说明
- 5.2 数据库迁移
- 5.3 查看数据表
- 5.4 模型文件
- 5.5 小结
- 第六章. 用户注册
- 6.1 章节说明
- 6.2 注册表单
- 6.3 用户数据验证
- 6.4 注册失败错误信息
- 6.5 注册成功
- 6.6 小结
- 第七章. 会话管理
- 7.1 章节说明
- 7.2 会话
- 7.3 用户登录
- 7.4 退出
- 7.5 小结
- 第八章. 用户 CRUD
- 8.1 章节说明
- 8.2 重构代码
- 8.3 更新用户
- 8.4 权限系统
- 8.5 列出所有用户
- 8.6 删除用户
- 8.7 访客模式
- 8.8 优化前端
- 8.9 小结
- 第九章. 微博 CRUD
- 9.1 章节说明
- 9.2 微博模型
- 9.3 显示微博
- 9.4 发布微博
- 9.5 微博数据流
- 9.6 删除微博
- 9.7 小结