当前位置 : 主页 > 网络编程 > PHP >

TP5模型基础类

来源:互联网 收集:自由互联 发布时间:2021-06-28
TP5模型基础类 before_insert(); } }); //增加后置事件 self::afterInsert(function($model){ if(method_exists($model,'after_insert')){ return $model-after_insert(); } }); //更新前置事件 self::beforeUpdate(function($model){ if(me
TP5模型基础类
 before_insert();
            }
        });
        //增加后置事件
        self::afterInsert(function($model){
            if(method_exists($model,'after_insert')){
                return $model->after_insert();
            }
        });
        //更新前置事件
        self::beforeUpdate(function($model){
            if(method_exists($model,'before_update')){
                return $model->before_update();
            }
        });
        // 更新后置事件
        self::afterUpdate(function($model){
            if(method_exists($model,'after_update')){
                return $model->after_update();
            }
        });
        //删除前置事件
        self::beforeDelete(function($model){
            if(method_exists($model,'before_delete')){
                return $model->before_delete();
            }
        });
        // 删除后置事件
        self::afterDelete(function($model){
            if(method_exists($model,'after_delete')){
                return $model->after_delete();
            }
        });

    }
    protected function initialize(){
        // 验证登录
        // if(method_exists($this,'isLogin'))
        if(method_exists(__CLASS__,'isLogin')){
            $this->isLogin();
        }
        // 验证权限
        if(method_exists(__CLASS__,'isAuth')){
            $this->isAuth();
        } 
        // 初始化模型验证层
        $this->validates=isset($this->validates)?$this->validates:'\think\Validate';
        $this->pk=isset($this->pk)?$this->pk:'id';
        // 这个放在后面执行比较合理
        parent::initialize();

    }
    //------------------模型验证钩子函数------------------
    protected function before_insert(){}
    protected function after_insert(){}
    protected function before_update(){}
    protected function after_update(){}
    protected function before_delete(){}
    protected function after_delete(){}
    //-----------------通用登录验证方法-------------------


    //----------------通用增删改查方法--------------------
    /**
     * 增加模型
     */
    public function add(){
        $data=Request::instance()->param();
        $this->data=$data;
        // 验证层
        $validate=new $this->validates;
        $result=$validate->batch()->check($this->data);
        if(!$result){
            // 获取validate的验证错误,并把关联数组转索引数组(为了隐藏字段名)
            $error=$validate->getError();
            $jerror=json_encode($error,JSON_UNESCAPED_UNICODE);
            throw new Exception($jerror);
        }        
        $res=$this->allowField($this->insertFields)->save();
        if($res){
            return ['status'=>'success','message'=>'执行成功','data'=>$res];
        }else{
            return ['status'=>'error','message'=>$this->getError()];
        }
    }
    
    /**
     * 编辑模型
     * @param  [type] $where [编辑的条件]
     * @return [type]        [description]
     */
    public function edit(){
        // 获取编辑的id
        $where[$this->pk]=intval(Request::instance()->get($this->pk));
        // 获取编辑的数据
        $data=Request::instance()->post();
        // 验证层,验证数据的有效性
        $validate=new $this->validates;
        $result=$validate->batch()->check($this->data);
        if(!$result){
            $error=$validate->getError();
            $jerror=json_encode($error,JSON_UNESCAPED_UNICODE);
            throw new Exception($jerror);
        }
        // 
        $res=$this->allowField($this->updateFields)->save($data,$where);
        echo $this->getLastSql();
        if($res){
            return ['status'=>'success','message'=>'执行成功','data'=>$res];
        }else{
            return ['status'=>'error','message'=>$this->getError()];
        }
    }

     /**
      * [showAll 显示列表]
      * @param  array   $where    [搜索条件,默认选出全部]
      * @param  integer $pagesize [分页数量]
      * @return [type]            [description]
      */
    public function show($where=[],$pagesize=10){
        // 组合search条件
        if(method_exists(__CLASS__,'search')){
            $this->search();
        }
        $where['isdel']=0;
        $data=$this->where($where)->paginate($pagesize);
        if(empty($data)){
            return ['status'=>'empty','message'=>'没有数据'];
        }
        return ['status'=>'success','message'=>'查询成功','data'=>$data];
    }

    /**
     * 硬删除
     * @return [type] [description]
     */
    public function del(){
        $id=intval(input('get.id'));
        $where[$this->pk]=$id;
        $res=$this->where($where)->delete();
        if($res){
            return ['status'=>'success','message'=>'操作成功','data'=>$res];
        }else{
            return ['status'=>'error','message'=>$this->getError()];
        }
    }

    /**
     * 软删除
     * @return [type] [description]
     */
    public function softDel(){
        $id=intval(input('get.id'));
        $softDel[$this->pk]=$id;
        $softDel['isdel']=1;
        $res=$this->update($softDel);
        if($res){
            return ['status'=>'success','message'=>'操作成功','data'=>$res];
        }else{
            return ['status'=>'error','message'=>$this->getError()];
        }
    }

    /**
     * 列表显示前置搜索条件组合方法
     * @return [where] [数组]
     */
    protected function search(){
        // 非删除状态的列表
        // $cate=I('get.category');
        // //接收参数
        // if($cate){
        //     $d=M('category')->select();
        //     $cates=\CodeBase\Libs\Tree::unlimited_child($d,'pid',$cate);
        //     $cates[]=$cate;
        //     $where['a.cid']=['in',$cates];
        // }
        // $keys=I('get.keys');
        // if($keys){
        //     $where['a.title']=array('like',"%$keys%");
        // }
        // $btime=strtotime(I('get.btime'));
        // $etime=strtotime(I('get.etime'));
        // if($btime&&$etime){
        //     $where['addtime']=['between',[$btime,$etime]];
        // }elseif ($btime){
        //     $where['addtime']=['egt',$btime];
        // }elseif ($etime){
        //     $where['addtime']=['elt',$etime];
        // }
        // $istop=I('get.is_top');
        // $isshow=I('get.is_show');
        // if($istop)  $where['a.is_top']=$istop;
        // if($isshow) $where['a.is_show']=$isshow;
        // $where['is_delete']=0;
    }
}
上一篇:TP5控制器基础类
下一篇:测试效果
网友评论