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;
}
}
