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);
- //在模版定义如下,循环输出用户的编号和姓名:
- <volist name="list" id="vo">
- {$vo.id}:{$vo.name}<br/>
- </volist>
- //支持输出查询结果中的部分数据,例如输出其中的第5~15条记录
- <volist name="list" id="vo" offset="5" length='10'>
- {$vo.name}
- </volist>
- //输出循环变量
- <volist name="list" id="vo" key="k" >
- {$k}.{$vo.name}
- </volist>
- //如果没有指定key属性的话,默认使用循环变量i,例如:
- <volist name="list" id="vo" >
- {$i}.{$vo.name}
- </volist>
- //如果要输出数组的索引,可以直接使用key变量,和循环变量不同的是,这个key是由数据本身决定,而不是循环控制的,例如:
- <volist name="list" id="vo" >
- {$key}.{$vo.name}
- </volist>
2、Foreach
- //foreach标签类似与volist标签,只是更加简单,没有太多额外的属性,例如:
- <foreach name="list" item="vo">
- {$vo.id}:{$vo.name}
- </foreach>
- name表示数据源 item表示循环变量。
- 可以输出索引,如下:
- <foreach name="list" item="vo" >
- {$key}|{$vo}
- </foreach>
- 也可以定义索引的变量名
- <foreach name="list" item="vo" key="k" >
- {$k}|{$vo}
- </foreach>
3、比较(eq或者equal、neq或者notequal、gt、egt、lt、elt、heq、nheq)
- //比较标签用于简单的变量比较,复杂的判断条件可以用if标签替换,比较标签是一组标签的集合,基本上用法都一致,如下:
- <比较标签 name="变量" value="值">
- 内容
- </比较标签>
- //通常比较标签的值是一个字符串或者数字,如果需要使用变量,只需要在前面添加“$”标志: 当vo对象的属性等于$a就输出
- <eq name="vo:name" value="$a">{$vo.name}</eq>
4、范围(in、notin、between、notbetween)
- //范围判断标签包括in notin between notbetween四个标签,都用于判断变量是否中某个范围。
- <in name="id" value="1,2,3">
- id在范围内
- <else/>
- id不在范围内
- </in>
5、IF
- <if condition="($name eq 1) OR ($name gt 100) "> value1
- <elseif condition="$name eq 2"/>value2
- <else /> value3
- </if>
TP3快速入门的更多相关文章
- Web Api 入门实战 (快速入门+工具使用+不依赖IIS)
平台之大势何人能挡? 带着你的Net飞奔吧!:http://www.cnblogs.com/dunitian/p/4822808.html 屁话我也就不多说了,什么简介的也省了,直接简单概括+demo ...
- SignalR快速入门 ~ 仿QQ即时聊天,消息推送,单聊,群聊,多群公聊(基础=》提升)
SignalR快速入门 ~ 仿QQ即时聊天,消息推送,单聊,群聊,多群公聊(基础=>提升,5个Demo贯彻全篇,感兴趣的玩才是真的学) 官方demo:http://www.asp.net/si ...
- 前端开发小白必学技能—非关系数据库又像关系数据库的MongoDB快速入门命令(2)
今天给大家道个歉,没有及时更新MongoDB快速入门的下篇,最近有点小忙,在此向博友们致歉.下面我将简单地说一下mongdb的一些基本命令以及我们日常开发过程中的一些问题.mongodb可以为我们提供 ...
- 【第三篇】ASP.NET MVC快速入门之安全策略(MVC5+EF6)
目录 [第一篇]ASP.NET MVC快速入门之数据库操作(MVC5+EF6) [第二篇]ASP.NET MVC快速入门之数据注解(MVC5+EF6) [第三篇]ASP.NET MVC快速入门之安全策 ...
- 【番外篇】ASP.NET MVC快速入门之免费jQuery控件库(MVC5+EF6)
目录 [第一篇]ASP.NET MVC快速入门之数据库操作(MVC5+EF6) [第二篇]ASP.NET MVC快速入门之数据注解(MVC5+EF6) [第三篇]ASP.NET MVC快速入门之安全策 ...
- Mybatis框架 的快速入门
MyBatis 简介 什么是 MyBatis? MyBatis 是支持普通 SQL 查询,存储过程和高级映射的优秀持久层框架.MyBatis 消除 了几乎所有的 JDBC 代码和参数的手工设置以及结果 ...
- grunt快速入门
快速入门 Grunt和 Grunt 插件是通过 npm 安装并管理的,npm是 Node.js 的包管理器. Grunt 0.4.x 必须配合Node.js >= 0.8.0版本使用.:奇数版本 ...
- 【第一篇】ASP.NET MVC快速入门之数据库操作(MVC5+EF6)
目录 [第一篇]ASP.NET MVC快速入门之数据库操作(MVC5+EF6) [第二篇]ASP.NET MVC快速入门之数据注解(MVC5+EF6) [第三篇]ASP.NET MVC快速入门之安全策 ...
- 【第四篇】ASP.NET MVC快速入门之完整示例(MVC5+EF6)
目录 [第一篇]ASP.NET MVC快速入门之数据库操作(MVC5+EF6) [第二篇]ASP.NET MVC快速入门之数据注解(MVC5+EF6) [第三篇]ASP.NET MVC快速入门之安全策 ...
随机推荐
- 网络安全从入门到精通 ( 第二章-5) 后端基础PHP—简介及基本函数-下
本文内容: 循环语句 PHP获取表单信息 PHP操作Mysql语句 语法SQL注入 1,循环语句: for循环: 语法:for($x=0,$x<10;$x++){执行语句;} 注意:$x++,先 ...
- 基于java的OpenCV环境搭建
一.OpenCV下载安装 OpenCV可以在官网下载链接https://opencv.org/releases.html 选择相应的版本下载保存就好(不过官网下载有时候真滴慢还会连不上.....)网盘 ...
- ECCV 2018 目标检测 | IoU-Net:将IoU的作用发挥到极致
常见的目标检测算法缺少了定位效果的学习,IoU-Net提出IoU predictor.IoU-guided NMS和Optimization-based bounding box refinement ...
- MySQL对JSON类型UTF-8编码导致中文乱码探讨
前言 继上文发表之后,结合评论意见并亲自验证最终发现是编码的问题,但是对于字符编码还是有点不解,于是乎,有了本文,我们来学习字符编码,在学习的过程中,我发现对于MySQL中JSON类型的编码导致数据中 ...
- leetcode 每日签到 409. 最长回文串
题目: 最长回文串 给定一个包含大写字母和小写字母的字符串,找到通过这些字母构造成的最长的回文串. 在构造过程中,请注意区分大小写.比如 "Aa" 不能当做一个回文字符串. 注意: ...
- Hadoop调度器
一.FIFO调度器(先进先出调度) 上图为FIFO调度器的执行过程示意图.FIFO Scheduler是最简单也是最容易理解的调度器,它缺点是不适用于共享集群.大的应用可能会占用所有集群资源,这就导致 ...
- GBDT梯度提升树算法及官方案例
梯度提升树是一种决策树的集成算法.它通过反复迭代训练决策树来最小化损失函数.决策树类似,梯度提升树具有可处理类别特征.易扩展到多分类问题.不需特征缩放等性质.Spark.ml通过使用现有decisio ...
- IO多路复用(IO Multiplexing)
什么是IO多路复用 为什么要有IO多路复用 作者总结 遵循学习新知识的三部曲:是什么?为什么?怎么用? 作者前言:IO多路复用本质上是网络通信过程中的一个技术名词. 什么是IO多路复用 一个用机场管理 ...
- Apache服务的主要目录和配置文件详解
Apache服务的主要目录和配置文件详解 2014-01-14 19:05:14 标签:httpd配置文件详解 apache配置文件 httpd配置文件 apache文件目录 原创作品,允许转载,转载 ...
- PTA-7-20 表达式转换(中缀转后缀,带括号,负数,小数转换)
本题考点:中缀表达式转后缀表达式. 难点: 带有小数的数字 数字可能带有正负号 题目描述: 算术表达式有前缀表示法.中缀表示法和后缀表示法等形式.日常使用的算术表达式是采用中缀表示法,即二元运算符位于 ...