模型机制
模型概述
1 模式作为MVC模式的重要组成部分,拥有业务逻辑运算、数据处理、为视图提供数据等功能。
2 phpGrace 更注重模型的复用能力,我们可以把项目常用的、具有统一规则的业务逻辑、数据查询等功能封装为一个模型类,然后在多个分组下控制器、视图内进行复用。
3 模型类的封装可以使项目更有模块感、更便于后期的维护及升级,我们建议 “一表一模型、复杂业务封装模型”。
4 自定义模型类继承自基础模型类 graceModel 基础封装了自动初始化数据操作对象、缓存处理机制,利用它们可以快速地完成自定义模型的封装工作;
创建模型
模型文件位置 : /phpGrace/models/对应模型文件.php
模型文件命名 : 模型名称.php
命名空间声明 : phpGrace\models
模型继承关系 : class 自定义模型名称 extends \graceModel{}
自动初始化数据操作对象
当某个模型是针对某个数据表创建时( 比如完成了对应表的增删改查等功能 ),可以选择模型内自动初始化数据操作对象。
自动初始化条件
1. 设置模型类的 $tableName [ 表名称 不包含配置内设置的表前缀 ] 及 $tableKey 属性 数据表 [ 主键 ]
2. 模型类的构造函数 $connectDB 参数为 true;
反之如果您不想自动初始化数据操作对象,以上2个条件其中一个不满足即可;
相关说明
初始化数据操作对象保存在模型对象的 $db 内,是一个基础的数据库操作对象,模型中可以直接使用 $this->db 进行数据表的连贯操作;
最简单的例子
下面的例子演示了基于 students 数据表封装的一个自定义模型,实现了自动初始化数据操作对象、列表查询、列表缓存功能。
<?php namespace phpGrace\models; class students extends \graceModel{ public $tableName = 'students'; public $tableKey = 'st_id'; // 获取列表 缓存模式 public function getList(){ // 模型的 cache 函数会返回经过缓存逻辑处理后的最终数据结果 return $this->cache( 'studentsList', PG_PAGE, // 每一页数据一个缓存 '__getStudentsList' ); } // 获取列表 动态数据库查询模式 protected function __getStudentsList(){ echo '没有缓存数据,执行数据查询'; return $this->db->page(2)->order('st_id desc')->fetchAll(); } }
控制器内调用模型 ( 也可以在视图内直接调用模型 )
<?php class indexController extends grace{ public function index(){ $studentsModel = new \phpGrace\models\students(); $studentsList = $studentsModel->getList(); p($studentsList); } }