模型机制
模型概述
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 数据表封装的一个自定义模型,实现了自动初始化数据操作对象、列表查询、列表缓存功能。
Code phpLine:22复制1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22.
- <?php
namespace
phpGrace\models;class
studentsextends
\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();- }
- }
控制器内调用模型 ( 也可以在视图内直接调用模型 )
Code phpLine:8复制1. 2. 3. 4. 5. 6. 7. 8.
- <?php
class
indexControllerextends
grace{public
function
index(){$studentsModel
=new
\phpGrace\models\students();$studentsList
=$studentsModel
->getList();- p(
$studentsList
);- }
- }