A-A+

thinkphp全站增删改查的操作

2016年12月22日 PHP开源系统 评论 2 条 阅读 7 views 次

作为一名PHPER,必须要具备最大限度的优化代码的思想,在thinkphp中,因为大多数的 Action 继承的都是 CommonAction 类库,所以关于平常使用的增删改查等操作,完全可以统一的放到 CommonAction.class.php 文件里面,然后在调用的时候就不用写一大堆的代码了。

下面夏日博客整理好的一份全站增删改查操作的方法,如下所示:

  1.  //公共查找数据  
  2.   protected function index($table){  
  3.     $model = M("$table");  
  4.       import("@.ORG.Page");   
  5.     $count  = $model->count();     
  6.       $Page     = new Page($count);  
  7.   
  8.       $list   = $model->limit($Page->firstRow. ',' . $Page->listRows)->order('id desc')->select();  
  9.       $this->list=$list;  
  10.        
  11.       $this->page=$Page->show();  
  12.    $this->display();  
  13.   }  
  14.     
  15.   //公共添加数据      
  16.   protected function add($table){  
  17.    $model = D("$table");  
  18.    if ($_POST){  
  19.     if ($model->add($_POST)){  
  20.     $this->success('添加成功');  
  21.    }else {  
  22.     $this->error('添加失败');  
  23.          }  
  24.    }else{  
  25.     $this->display();  
  26.    }  
  27. }  
  28.   
  29. //公共删除数据  
  30. protected function edit($table){  
  31.     $id=I('id',0,'intval');//在表单中传入要删除数据的主键ID,否则取0,那么下面就会返回错误,所以不会误删。  
  32.     if ($_POST){  
  33.         if(M("$table")->where(array('id'=>$id))->save($_POST)){  
  34.             $this->success('修改成功');  
  35.         }else{  
  36.             $this->error('修改失败');  
  37.         }  
  38.     }else{  
  39.         $where['id'] = array('eq',$id);  
  40.         $this->list = M("$table")->where($where)->find();  
  41.         $this->display();  
  42.     }  
  43.       
  44.       
  45. }  
  46.     
  47.   //公共删除数据  
  48.   protected function del($table){  
  49.     $id=I('id',0,'intval');//在表单中传入要删除数据的主键ID,否则取0,那么下面就会返回错误,所以不会误删。  
  50.     $result=M("$table")->delete($id);//删除就只用M实例化表  
  51.     if ($result) {  
  52.         $this->success('删除成功');  
  53.     }else{  
  54.         $this->error('删除失败');  
  55.     }  
  56.   }  
  57.     
  58.   //公共删除数据  
  59.   protected function foreverdelete($table){  
  60.     $id=I("get.id");//在表单中传入要删除数据的主键ID,否则取0,那么下面就会返回错误,所以不会误删。  
  61.     $condition = array($id => array('in', explode(',', $id)));  
  62.     if(M("$table")->where($condition)->delete()){  
  63.         $this->success('删除成功');  
  64.     }else{//xiariboke.net  
  65.         $this->error('删除失败');  
  66.     }  
  67.   }  

我这里定义了五个protected方法,除了增删改查等常规操作之外,还有一个批量删除操作,这是因为项目的需要,把常用的方法进行包装之后,在Acion里面再进行操作就简单多了,看如下的代码:

  1. <?php  
  2. // 本类由系统自动生成,仅供测试用途  
  3. class MembergroupsAction extends CommonAction {  
  4.     //列表  
  5.     public function index(){  
  6.         parent::index('Membergroups');  
  7.      }  
  8.     //添加  
  9.      Public function add () {  
  10.         parent::add('Membergroups');  
  11.      }  
  12.      //修改  
  13.     public function edit(){  
  14.       
  15.         parent::edit('Membergroups');  
  16.     }  
  17.     //删除  
  18.     Public function del () {  
  19.         parent::del('Membergroups');  
  20.     }  
  21.     //批量删除  
  22.     public function foreverdelete(){  
  23.         parent::foreverdelete('Membergroups');  
  24.     }//xiariboke.net  
  25.       
  26. }  

瞬间是否感觉代码清爽了许多呢,这只是一个还没有完全优化成型的代码,还可以进一步的优化,比如Action里面的 Membergroups 数据库,可以在 Action 直接定义成一个常量,而没有必要在这里突显四个,总之,代码就是越优化越简洁才行。

很明显,上面的代码是只传递了一个数据库的名称,我们还可以传递其它的内容,比如 thinkphp 查询里面的 where 条件等,另外,这里也引入了 page 的类库,这个是需要有 page 文件存在的。

标签:

2 条留言  访客:2 条  博主:0 条

  1. 电视品牌

    历史、地理与政治之间有着错综复杂而又密不可分的关系,构成了人类历史发展进程中的一条主要线索,也一直吸引着人们加以关注和思考。

  2. 香港虚拟主机

    无论是php还是thinkphp增删改查都是最基本的东西,也是非常重要的东西

给我留言