[TOC]
# 1.7 模型使用
## 1.7.1 簡介
XPHP 的模型(Model)非常簡單易用,只需要幾步就能夠輕松上手,讓您的應用有標準的數據功能。
## 1.7.2 配置修改
使用模型(Model)前需要對XPHP進行一些配置,以便于使他更符合您的需要。
### 1.7.2.1 修改模型后端數據庫
模型后端所使用的數據庫驅動可以由開發者任意選擇,默認選擇的是`Idiorm`這一款優秀的ORM。
如要修改,請看`Register.php`中的這個代碼片段:
```php
$App->addBatch([
['Core.Error.Handler', '\Whoops\Handler\PlainTextHandler'],
['Core.Route', '\X\Route'],
['Core.Model.Database', '\X\Database\Idiorm']
]);
```
是的,向系統容器內注冊的`Core.Model.Database`指定了所使用的數據庫驅動。
目前XPHP內置了如下驅動:
| 名稱 | Service名 | 備注 |
| ---- | ---------- | --- |
| Idiorm | \X\Database\Idiorm | 無 |
| NonDB | \X\Database\NonDB | 無 |
### 1.7.2.2 修改數據庫驅動配置
數據庫驅動配置位于 `$configure` 變量的 `Database` 字段中。
例子:
```php
"Database"=> [
'connection_string' => 'mysql:host=localhost;dbname=xphp;charset=utf8', //DSN
'driver_options' => array(\PDO::MYSQL_ATTR_INIT_COMMAND => 'SET NAMES utf8'), //PDO Option
'username' => 'root', //用戶名 username
'password' => '', //密碼 password
'logging' => true, //開啟Query日志 Enable Query Log
'caching' => true, //開啟緩存 Enalble Cache
'caching_auto_clear'=> true //自動清理緩存 Auto Clear Cache
]
```
相信大家看示例可以自己修改。
### 1.7.3 創建一個模型
每個模型都位于 `/App/應用名/Model` 目錄下,文件名為 `模型名.class.php`。
該文件必須位于 `Model\應用名` 命名空間下。
該文件必須包含且僅應包含一個以模型名命名的類,且它必須繼承`\X\Model`類。
這個類需要有一個 `table` 屬性,并且必須使用 `protected` 修飾符,包括這個模型需要使用的表名。
示例:
```php
<?php
/**
* A Demo Model.
*
* @author xtl<xtl@xtlsoft.top>
* @license MIT
*
*/
namespace Model\Home;
class TestModel extends \X\Model {
/**
* Table Name
*
* @var $table
*
*/
protected $table = "test";
}
```
您也可以向內添加其他方法,使用`$this`可以訪問到數據庫驅動實例的所有方法,使用`$this->table("表名")`可以獲取另一個表的數據庫驅動實例。
### 1.7.4 在控制器中實例化模型
在控制器中可以直接使用 `$this->model("應用名/模型名")` 實例化模型。
例子:
```php
$model = $this->model("Home/TestModel");
echo $model->where("name", test")->findOne()->value;
```