TP3快速入门
一、查询
D方法实例化模型类的时候通常是实例化某个具体的模型类,如果你仅仅是对数据表进行基本的CURD操作的话,使用M方法实例化的话,由于不需要加载具体的模型类,所以性能会更高。
$map = array(); $map['u.store_id'] = array('eq',0); $map['u.reg_time'] = array('egt',time()); $map['u.user_rank'] = array('in',array(0,9)); $group = ''; $order = ''; //查询10-20的数据集 $list = M('users u')->field('u.user_id,u.user_name,u.store_id') ->join('LEFT JOIN __ORDER_INFO__ oi ON oi.user_id=u.user_id') ->where($map) ->limit(10,20) ->group($group) ->order($order) ->select(); //读取数据表中的一行数据(或者关联数据),主要通过find方法完成 //如果查询出错,find方法返回false,如果查询结果为空返回NULL,查询成功则返回一个关联数组(键值是字段名或者别名)。 $data = M('users')->where('status=1 AND name="thinkphp"')->find(); //读取字段值其实就是获取数据表中的某个列的多个或者单个数据,最常用的方法是 getField方法。 //默认情况下,当只有一个字段的时候,返回满足条件的数据表中的该字段的第一行的值。 $nickname = M("User")->where('id=3')->getField('nickname'); //如果需要返回整个列的数据,可以用: $nickname = M("User")->getField('id',true); //如果传入多个字段的话,默认返回一个关联数组: $list = M("User")->getField('id,nickname'); //获取用户数: $userCount = M("User")->count(); //原生sql查询 $Model = new \Think\Model() // 实例化一个model对象 没有对应任何数据表 $Model->query("select * from think_user where status=1"); //打印SQL echo M()->_sql();
二、更新
$data = array(); $data['name'] = 'ThinkPHP'; $data['email'] = 'ThinkPHP@gmail.com'; M("User")->where('id=5')->save($data); // 根据条件更新记录 //原生sql执行修改、删除 $Model = new \Think\Model() // 实例化一个model对象 没有对应任何数据表 $Model->execute("update think_user set name='thinkPHP' where status=1");
三、删除
M("User")->where('id=5')->delete(); // 删除id为5的用户数据
四、插入
$data['name'] = 'ThinkPHP'; $data['email'] = 'ThinkPHP@gmail.com'; M("User")->add($data); // 批量添加数据 $dataList[] = array('name'=>'thinkphp','email'=>'thinkphp@gamil.com'); $dataList[] = array('name'=>'onethink','email'=>'onethink@gamil.com'); $User->addAll($dataList);
五、接受参数、跳转、重定向、判断请求类型、ajax返回、显示页面
//判断请求类型 IS_GET IS_POST IS_AJAX //接受参数 I方法是ThinkPHP用于更加方便和安全的获取系统输入变量,可以用于任何地方,用法格式如下: //I('变量类型.变量名/修饰符',['默认值'],['过滤方法或正则'],['额外数据源']) I('post.name','','htmlspecialchars'); // 采用htmlspecialchars方法对$_POST['name'] 进行过滤,如果不存在则返回空字符串 //跳转、重定向 //系统的\Think\Controller类内置了两个跳转方法success和error,用于页面跳转提示,而且可以支持ajax提交。 //success和error方法的第一个参数表示提示信息,第二个参数表示跳转地址,第三个参数是跳转时间(单位为秒),例如: // 操作完成3秒后跳转到 /Article/index $this->success('操作完成','/Article/index',3); // 操作失败5秒后跳转到 /Article/error $this->error('操作失败','/Article/error',5); //Controller类的redirect方法可以实现页面的重定向功能。 //redirect方法的参数用法和U函数的用法一致(参考URL生成部分),例如: //重定向到New模块的Category操作 $this->redirect('New/category', array('cate_id' => 2), 5, '页面跳转中...'); //上面的用法是停留5秒后跳转到New模块的category操作,并且显示页面跳转中字样,重定向后会改变当前的URL地址。 //如果你仅仅是想重定向要一个指定的URL地址,而不是到某个模块的操作方法,可以直接使用redirect函数重定向,例如: //重定向到指定的URL地址 $this->redirect('/New/category/cate_id/2', 5, '页面跳转中...'); //ajax返回 //ThinkPHP可以很好的支持AJAX请求,系统的\Think\Controller类提供了ajaxReturn方法用于AJAX调用后返回数据给客户端。并且支持JSON、JSONP、XML和EVAL四种方式给客户端接受数据,并且支持配置其他方式的数据格式返回。ajaxReturn方法调用示例: $data['status'] = 1; $data['content'] = 'content'; $this->ajaxReturn($data,'json'); //显示页面 $this->display(); //或 $this->display('模板地址');
六、模板标签
1、Volist
//volist标签通常用于查询数据集(select方法)的结果输出,通常模型的select方法返回的结果是一个二维数组,可以直接使用volist标签进行输出。 在控制器中首先对模版赋值: $list = M('User')->limit(10)->select(); $this->assign('list',$list); //在模版定义如下,循环输出用户的编号和姓名:{$vo.id}:{$vo.name} //支持输出查询结果中的部分数据,例如输出其中的第5~15条记录
{$vo.name} //输出循环变量{$k}.{$vo.name} //如果没有指定key属性的话,默认使用循环变量i,例如:{$i}.{$vo.name} //如果要输出数组的索引,可以直接使用key变量,和循环变量不同的是,这个key是由数据本身决定,而不是循环控制的,例如:{$key}.{$vo.name}
2、Foreach
//foreach标签类似与volist标签,只是更加简单,没有太多额外的属性,例如:{$vo.id}:{$vo.name} name表示数据源 item表示循环变量。 可以输出索引,如下:{$key}|{$vo} 也可以定义索引的变量名{$k}|{$vo}
3、比较(eq或者equal、neq或者notequal、gt、egt、lt、elt、heq、nheq)
//比较标签用于简单的变量比较,复杂的判断条件可以用if标签替换,比较标签是一组标签的集合,基本上用法都一致,如下: <比较标签 name="变量" value="值"> 内容 比较标签> //通常比较标签的值是一个字符串或者数字,如果需要使用变量,只需要在前面添加“$”标志: 当vo对象的属性等于$a就输出{$vo.name}
4、范围(in、notin、between、notbetween)
//范围判断标签包括in notin between notbetween四个标签,都用于判断变量是否中某个范围。id在范围内 id不在范围内
5、IF
value1 value2 value3