ThinkChat2.0新版上线,更智能更精彩,支持会话、画图、阅读、搜索等,送10W Token,即刻开启你的AI之旅 广告
[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; ```