A-A+
thinkphp全站增删改查的操作
作为一名PHPER,必须要具备最大限度的优化代码的思想,在thinkphp中,因为大多数的 Action 继承的都是 CommonAction 类库,所以关于平常使用的增删改查等操作,完全可以统一的放到 CommonAction.class.php 文件里面,然后在调用的时候就不用写一大堆的代码了。
下面夏日博客整理好的一份全站增删改查操作的方法,如下所示:
- //公共查找数据
- protected function index($table){
- $model = M("$table");
- import("@.ORG.Page");
- $count = $model->count();
- $Page = new Page($count);
- $list = $model->limit($Page->firstRow. ',' . $Page->listRows)->order('id desc')->select();
- $this->list=$list;
- $this->page=$Page->show();
- $this->display();
- }
- //公共添加数据
- protected function add($table){
- $model = D("$table");
- if ($_POST){
- if ($model->add($_POST)){
- $this->success('添加成功');
- }else {
- $this->error('添加失败');
- }
- }else{
- $this->display();
- }
- }
- //公共删除数据
- protected function edit($table){
- $id=I('id',0,'intval');//在表单中传入要删除数据的主键ID,否则取0,那么下面就会返回错误,所以不会误删。
- if ($_POST){
- if(M("$table")->where(array('id'=>$id))->save($_POST)){
- $this->success('修改成功');
- }else{
- $this->error('修改失败');
- }
- }else{
- $where['id'] = array('eq',$id);
- $this->list = M("$table")->where($where)->find();
- $this->display();
- }
- }
- //公共删除数据
- protected function del($table){
- $id=I('id',0,'intval');//在表单中传入要删除数据的主键ID,否则取0,那么下面就会返回错误,所以不会误删。
- $result=M("$table")->delete($id);//删除就只用M实例化表
- if ($result) {
- $this->success('删除成功');
- }else{
- $this->error('删除失败');
- }
- }
- //公共删除数据
- protected function foreverdelete($table){
- $id=I("get.id");//在表单中传入要删除数据的主键ID,否则取0,那么下面就会返回错误,所以不会误删。
- $condition = array($id => array('in', explode(',', $id)));
- if(M("$table")->where($condition)->delete()){
- $this->success('删除成功');
- }else{//xiariboke.net
- $this->error('删除失败');
- }
- }
我这里定义了五个protected方法,除了增删改查等常规操作之外,还有一个批量删除操作,这是因为项目的需要,把常用的方法进行包装之后,在Acion里面再进行操作就简单多了,看如下的代码:
- <?php
- // 本类由系统自动生成,仅供测试用途
- class MembergroupsAction extends CommonAction {
- //列表
- public function index(){
- parent::index('Membergroups');
- }
- //添加
- Public function add () {
- parent::add('Membergroups');
- }
- //修改
- public function edit(){
- parent::edit('Membergroups');
- }
- //删除
- Public function del () {
- parent::del('Membergroups');
- }
- //批量删除
- public function foreverdelete(){
- parent::foreverdelete('Membergroups');
- }//xiariboke.net
- }
瞬间是否感觉代码清爽了许多呢,这只是一个还没有完全优化成型的代码,还可以进一步的优化,比如Action里面的 Membergroups 数据库,可以在 Action 直接定义成一个常量,而没有必要在这里突显四个,总之,代码就是越优化越简洁才行。
很明显,上面的代码是只传递了一个数据库的名称,我们还可以传递其它的内容,比如 thinkphp 查询里面的 where 条件等,另外,这里也引入了 page 的类库,这个是需要有 page 文件存在的。
历史、地理与政治之间有着错综复杂而又密不可分的关系,构成了人类历史发展进程中的一条主要线索,也一直吸引着人们加以关注和思考。
无论是php还是thinkphp增删改查都是最基本的东西,也是非常重要的东西