# 模型
模型使用ThinkORM实现,操作同tp一致
文档请参看
[## 模型定义](https://www.kancloud.cn/manual/think-orm/1258044)
模型是`ThinkORM`的一个重要组成,`Db`和模型的存在只是`ThinkORM`架构设计中的职责和定位不同,`Db`负责的只是数据(表)访问,模型负责的是业务数据和业务逻辑,实现了数据对象化访问的封装。
相对于使用`Db`类来说模型的优势主要在于:
* 支持`ActiveRecord`实现;
* 灵活的事件机制;
* 数据自动处理能力;
* 简单直观的数据关联操作;
* 封装业务逻辑;
# 定义
## 模型定义
定义一个模型类很简单,下面是一个最简单的`User`模型:
文件路径application/index/model/User.php
~~~
<?php
namespace application\index\model;
use think\Model;
class User extends Model
{
public function getList($size = 10,$page = 1,$where = null)
{
$list = $this
->where($where)
->order(['id' => 'desc'])
->cache(true)
->paginate([
'list_rows'=> $size,
'page' => $page,
]);
return $list;
}
~~~
> 请确保你已经在数据库配置文件中配置了数据库连接信息,如不清楚请参考数据库一章
模型会自动对应数据表,模型类的命名规则是除去表前缀的数据表名称,采用驼峰法命名,并且首字母大写,例如:
| 模型名 | 约定对应数据表(假设数据库的前缀定义是`think_`) |
| --- | --- |
| User | think\_user |
| UserType | think\_user\_type |
如果你的规则和上面的系统约定不符合,那么需要设置模型类的数据表名称`table`属性,以确保能够找到对应的数据表。
> 模型自动对应的数据表名称都是遵循小写+下划线规范,如果你的表名有大写的情况,必须通过设置模型的`table`属性。