您的位置:威尼斯官方网站 > 威尼斯正规官网 > 而把大家自定义的 Model 类作为我们项目中的 Mo

而把大家自定义的 Model 类作为我们项目中的 Mo

发布时间:2019-11-03 01:23编辑:威尼斯正规官网浏览(89)

       ThinkPHP 提供了三个 Model 类,供别的的 Model 举行后续。Model 类中是 MVC 中的模型类,它是调用 悠久层 的上层类。以为那样描述难题多多,可是有何方法吗?不过,这几个 Model 偶然无法知足大家的生龙活虎部分必要,由此大家须求自定义三个 Model 类出来,不过自定义的 Model 肖似要继续 TP 提供的 Model 类,而把大家自定义的 Model 类作为我们项目中的 Model 基类。作者怎么以为自身在说绕口令,等等...我有一点晕。

     

    庸俗的须求

      在采纳 Java 的开源项目 JeeSite 时,养成了一个倒霉的习于旧贯,习于旧贯给每张表都扩大create_by、create_date、update_by、update_date、remarks 和 del_flag 这么多少个字段。假使每张表都有那多少个字段,那么对每张表实行 insert 时都会对以上的字段进行安装,对每张表进行 update 时都会对中间有的字段展开改革,对每条记下进行 delete 时都其实是对 del_flag 字段进行置位。重复操作相当多,一些操作方法被改换。那么,这时候将要自定义二个谈得来的 Model 来作为项指标 基类 了,这几个 Model 就担负干上边小编说的那几个事情了。

     

    自定义三个 Model

      自定义二个 Model,Model 中起码重新 TP 提供的 Model 中的 add、save、delete 和 select 方法。

      定义代码如下:

     1 <?php
     2 namespace AdminModel;
     3 use ThinkModel;
     4 
     5 /**
     6  * 项目中其他 Model 类的基类
     7  * 该类继承自 TP 提供的基类 Model
     8  */
     9 class BaseModel extends Model {
    10     
    11     /**
    12      * 继承基类 Model 的 add 方法
    13      * 自动插入 id create_by create_date update_by update_date del_flag
    14      */
    15     public function add($data='',$options=array(),$replace=false) {
    16         
    17         $data["id"]          = $this->getUuid();
    18         $data["create_by"]   = "";
    19         $data["create_date"] = date("Y-m-d H:i:s");
    20         $data["update_by"]   = "";
    21         $data["update_date"] = date("Y-m-d H:i:s");
    22         $data["del_flag"]    = '0';
    23         
    24         return parent::add($data, $options, $replace);
    25     }
    26     
    27     /**
    28      * 获得 未删除 的所有数据
    29      * 记录是否被删除通过 del_flag 字段来进行确定
    30      */
    31     public function select($options=array()) {
    32         $map["del_flag"] = 0;
    33         $this->where($map);
    34         
    35         return parent::select($options);
    36     }
    37     
    38     /**
    39      * 获取 全部 的所有数据
    40      */
    41     public function selectAll($options=array()) {
    42         return parent::select($options);
    43     }
    44     
    45     /**
    46      * 更新数据
    47      * 更新数据时,要更新 update_by update_date 两个字段
    48      */
    49     public function save($data='',$options=array()) {
    50         $data["update_by"]   = "";
    51         $data["update_date"] = date("Y-m-d H:i:s");
    52         
    53         return parent::save($data, $options);
    54     }
    55     
    56     /**
    57      * 删除也是更新
    58      * 设置 删除 标志位即可
    59      */
    60     public function delete($data='',$options=array()) {
    61         $data["del_flag"] = 1;
    62         
    63         return parent::save($data, $options);
    64     }
    

      这样,咱们的 BaseModel 就定义好了,以后项目中的 Model 就不再接续 TP 的 Model 类了,而是继续大家自定义的 BaseModel 了。

     

    传承大家定义的基类

      承袭的 BaseModel 的办法和后续 Model 的办法是雷同的,只是使用 use 引进命名空间到眼下成效域时的急需改进为我们的命名空间,而不是再去接受 TP 提供的命名空间。代码如下:

    1 <?php
    2 namespace AdminModel;
    3 use AdminModelBaseModel;
    4 
    5 class TrunkModel extends BaseModel {
    

      use 引入的命名空间是 AdminModelBaseModel ,因为我们定义的 BaseModel 的命名空间是 AdminModel,因为这里的 TrunkModel 和 BaseModel 在五个命名空间下,省去 use 也是能够的。

     

      那样,在大家用 D 方法实例化 TrunkModel 的指标后,使用 add 方法插入数据时,就能先调用 BaseModel 中的 add 方法了,这样大家每张表都有的 create_by 等生龙活虎多级字段就都会自动获得了。

    本文由威尼斯官方网站发布于威尼斯正规官网,转载请注明出处:而把大家自定义的 Model 类作为我们项目中的 Mo

    关键词: