thinkphp之CURD

来源:互联网 发布:python xpath模块 编辑:程序博客网 时间:2024/05/16 11:18

令牌的使用方法 create,form表单中药指定method='post',不然create方法会报错的

例如
    <form action="__URL__/add">
    <input type="test" name="username">
    <input type="submit" name="提交">
    </form>
    在IndexAction.class.php当中
    function add() {

        $user = new Model('user');
        if($user->create) {
            $this->success('create成功');
        } else {
            $this->error('失败');
        }
    }

我们可以在官网下载一个success.html页面,根据自己需求修改一下,也可以直接使用,这样就会出现成功或者失败的页面啦

关闭令牌的方法
    在config.php中 添加数据元素
    'TOKEN'=>FALSE,


对数据库的增删查改
    $user = M('user');

    //find();查找一条记录
    //select();列出该表的所有记录
    //findAll();与select类似


对数据库中查询或者操作添加特定条件 例如where limit order by


    $user = M('user');
    $user->where(id > 3)->select();    //顺序可变
    $user->where(id > 1)->order('id desc')->limit('2')->select();
    它等价于
    $user->select(array('where'=>'id > 1','order'=>'id desc','limit'=>'2'));

这样是查询默认的表中所有的字段,如果我们想要查找特定的几个字段可以这样、

$user->where(id > 1)->order('id desc')->limit('2')->field('id,username')->select();//切记select()的顺序一定是方在最后面,不可改变他的位置
$user->select(array('field'=>'id,username','where'=>'id > 1','order'=>'id desc','limit'=>'2'));

根据个人习惯哪一种都可以


数组的形式和其他的查询形式是可以变更的
比如说 $user->where(id > 1)->order('id desc')->limit('2')->select();
他等价于 $user->where(id > 1)->order('id'=>'desc')->limit('2')->select();


$list = $user->table('think_user'=>'a','think_user_message'=>'b')->field('a.id as uid,b.username as name')->where('a.id=b.id')->select();
他等价于 
$list = $user->table('think_user'=>'a','think_user_message'=>'b')->field('a.id'=>'uid','b.username'=>'name')->where('a.id=b.id')->select();


以上的多表关联仅仅是对简单的关联表进行查询


想使用join查询thinckphp有自己的函数,如法如下
$list = $user->table('think_user'=>'a','think_user_message'=>'b')->join('id on a.id=b.id','username on a.username=b.username')->select();


//distinct方法
    $user->dlstinct(true)->select();//将表中重复的记录除掉

    我们经常用到锁表机制,thinkphp中的用法是lock(true)

    以上是对数据库读取的操作


下面的是对数据库的更新操作 我们使用的是save(); 例如
    $data['username'] = 'test';
    $data['password'] = md5('admin888');
    $list = $user->where('id=5')->save($data);


这里可以用thinkphp中的date()方法进行代替传值
    $data['username'] = 'test';
    $data['password'] = md5('admin888');
    $list = $user->where('id=5')->data($data)->save();


我们也可以不指定where条件 而是在提交更新数据的时候模拟一个where
    $data['username'] = 'test';
    $data['password'] = md5('admin888');
    $data['id'] = '5';
    $list = $user->save($data);
    or
    $list = $user->data($data)->save();


save()方法配合create()使用

    function add() {

        $user = new Model('user');

        if($vo=$user->create) {       

 //这里没有对save进行赋值,是因为$vo已经将接受的表单数据添加给$user了,这时候save就是对user的操作啦,这就是createde的方便
            if($user->save()) {
                $this->success('更新成功');
            } else {
                $this->error('更新失败');
            }
        }
    }


thinkphp数据库操作之添加add()

    $data['username'] = 'test';
    $data['password'] = md5('test');
    $list = $user->add($data);

    同样可以使用data()方法代替add()
    $list = $user->data($data)->add();
    add配合create方法使用和save一致


这些都是对form表单中 post方法的操作,我们也可以对表单中使用get方法进行 CURD 与post方法 不太一样

    $_GET['password'] = md5($_GET['password']);
    if($list = $user->add($_GET)) {
        $this->success('添加成功');
    } else {
        $this->error('添加失败');
    }


thinkphp中的delete()方法
    $list = $user->delete(7);//会默认去寻找主键等于7的那条记录 并且删除掉
    或者
    $list = $user->where('id=7')->delete();//个人比较喜欢这种,比较直观


$user->getLastSql();调用最后执行的那条sql语句