TP5模型基础类 before_insert(); } }); //增加后置事件 self::afterInsert(function($model){ if(method_exists($model,'after_insert')){ return $model-after_insert(); } }); //更新前置事件 self::beforeUpdate(function($model){ if(me
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; } }