模型机制

模型概述

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 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();
    • }
    • }

    控制器内调用模型 ( 也可以在视图内直接调用模型 )

    Code phpLine:8复制
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
    • <?php
    • class indexController extends grace{
    • public function index(){
    • $studentsModel = new \phpGrace\models\students();
    • $studentsList = $studentsModel->getList();
    • p($studentsList);
    • }
    • }