# 模型
模型使用ThinkORM實現,操作同tp一致
文檔請參看
[## 模型定義](http://www.hmoore.net/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`屬性。