[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;
```