Maison >développement back-end >tutoriel php > ThinkPHP学习札记(八)CURD的的相关操作以及表的关联查询等
ThinkPHP学习笔记(八)CURD的的相关操作以及表的关联查询等
本节的使用基于六、七的基于数据库的链接和conf的配置
主要是action中的curd的方法和update
action
<?php class CurdAction extends Action{ //创建和增删改成 //create() //创建会完成自动映射、自动填充、自动验证 //如果开启了字段缓存,会去匹配字段,如果不存在,会获取字段,返回一个数组 //create方法中有自动令牌,向当前的session会话中放入Md5加密的字符串会将字符串插入点表单的</from>之前,session和form中有 //令牌可以在conf中配置;可以在页面设置不显示令牌但是一样使用令牌<!--{__NOTOKEN__}--> //如果页面中有多个表单,只有一个表单需要令牌,可以在此表单中显示指定:<!--{__TOKEN__}--> //create默认获取数据的方法是post方法 public function index() { $this->display(); } public function add(){ $user=new Model('User'); // //不使用create方法验证令牌 // if (!$user->autoCheckToken($_POST)) { // //令牌验证失败的代码; // $this->error($user->getError()); // }else{ // //获取其中信息$user // $user->username; // $user->username=md5($user->password); // // dump($user); // if ($user->add()) { // $this->success('添加成功'); // }else{ // $this->error($user->getError()); // } // } //返回的数组信息如果用自动填充,返回值和信息更多 if ($vo=$user->create()) { // //这个方法是执行成功的一个方法,会给出页面的各种信息 // dump($vo); // //successs模板可以在ThinkPHP的example中找到,放入到default中的public目录中 // $this->success('create成功'); //获取其中信息$user $user->username=md5($user->password); // dump($user); if ($user->add()) { $this->success('添加成功'); }else{ $this->error($user->getError()); } }else { //如果执行失败,代码不会继续向后执行 // dump($vo); // dump($user); //error模板可以在ThinkPHP的example中找到,放入到default中的public目录中 $this->error($user->getError()); } } public function curd(){ $user=M('user'); //find()查询单条记录 //select()查询所有信息 //findAll()就是select的同名方法 // $find=$user->find(); // $select=$user->select(); // $findAll=$user->findAll(); // dump($find); // dump($select); // dump($findAll); //一:查询涉及到一个连贯操作问题;手册:5.3.10 //1.根据条件进行查询where中可以通过字符串、数组、对象来传值 //函数有:data、where、limit、order、field、group、having(sql一致,二次过滤结果集)、page(多用pageView来进行分页) //data方法可以被替代用于save当中传值、add、delete的方法时 // $select=$user->select(array('where'=>'id>1','limit'=>'2,8','order'=>'id desc')); // $select=$user->where('id=3')->find(); // $select=$user->where('id>1')->limit('2')->order('id desc')->field('id,username')->select(); //2.$user->table()用来操作多张表;也可以通过field来限制查询列 // $select=$user->table(array('tb_user'=>'user','tb_user_message'=>'m'))->where('user.id=m.id')->select(); // $select=$user->table('tb_user user,tb_user_message m')->where('user.id=m.id')->select(); //3.$user->join() // $select=$user->join('user on user.id=user_message.id')->select(); //4.$user->distinct() // $select=$user->distinct(true)->select(); //5.关联模型:$user->relation() //6.锁:$user->lock() //基本上可以不用考虑锁机制(mysql5.0的myisam引擎支持表级锁,innodB引擎支持行级锁) // $select=$user->lock(true)->select(); //二:getField() // $select=$user->where('id>1')->getField('id,username'); //更新操作:返回值是受影响行数 //1.save()中可以直接传入想要更改的数据,格式:字段信息数组 //可以不写where,但是数组中必须模拟的where条件 // $data['id']='4'; // $data['username']='aaaa'; // $data['password']='aaaa'; // $select=$user->where('id=4')->save($data); // $select=$user->where('id=4')->data($data); //1.setField()参数:字段,值 // $select=$user->where('id=4')->setField(array('username','password'),array('google','google')); //2.setInc():对数字字段进行的增加更新操作。参数:字段、where、增加的整型(默认加一) // $select=$user->setInc('price','id=2',1); //3.setDec()对数字字段进行的减少更新操作。参数:字段、where、减少的整型(默认减一) // $select=$user->setDec('price','id=2',1); //add操作:返回插入的id // $data['username']='aaaa'; // $data['password']='aaaa'; // $select=$user->add($data); // $select=$user->data($data)->add(); //delete操作:受影响的行数 // $select=$user->delete(6); // $select=$user->where('id>4')->delete(); // $select=$user->where('id>1')->limit('1')->order('id desc')->delete(); dump($select); //实现更新指定id的数据 // $this->display(); } public function update(){ $user=new Model('User'); //返回的数组信息如果用自动填充,返回值和信息更多 if ($vo=$user->create()) { $user->username=md5($user->password); if ($user->save()) { $this->success('添加成功'); }else{ $this->error($user->getError()); } }else { $this->error($user->getError()); } } } ?>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>CURD</title>