一、查询

  D方法实例化模型类的时候通常是实例化某个具体的模型类,如果你仅仅是对数据表进行基本的CURD操作的话,使用M方法实例化的话,由于不需要加载具体的模型类,所以性能会更高。

  1. $map = array();
  2. $map['u.store_id'] = array('eq',0);
  3. $map['u.reg_time'] = array('egt',time());
  4. $map['u.user_rank'] = array('in',array(0,9));
  5.  
  6. $group = '';
  7. $order = '';
  8. //查询10-20的数据集
  9. $list = M('users u')->field('u.user_id,u.user_name,u.store_id')
  10. ->join('LEFT JOIN __ORDER_INFO__ oi ON oi.user_id=u.user_id')
  11. ->where($map)
  12. ->limit(10,20)
  13. ->group($group)
  14. ->order($order)
  15. ->select();
  16.  
  17. //读取数据表中的一行数据(或者关联数据),主要通过find方法完成
  18. //如果查询出错,find方法返回false,如果查询结果为空返回NULL,查询成功则返回一个关联数组(键值是字段名或者别名)。
  19. $data = M('users')->where('status=1 AND name="thinkphp"')->find();
  20.  
  21. //读取字段值其实就是获取数据表中的某个列的多个或者单个数据,最常用的方法是 getField方法。
  22. //默认情况下,当只有一个字段的时候,返回满足条件的数据表中的该字段的第一行的值。
  23. $nickname = M("User")->where('id=3')->getField('nickname');
  24. //如果需要返回整个列的数据,可以用:
  25. $nickname = M("User")->getField('id',true);
  26. //如果传入多个字段的话,默认返回一个关联数组:
  27. $list = M("User")->getField('id,nickname');
  28.  
  29. //获取用户数:
  30. $userCount = M("User")->count();
  31.  
  32. //原生sql查询
  33. $Model = new \Think\Model() // 实例化一个model对象 没有对应任何数据表
  34. $Model->query("select * from think_user where status=1");
  35.  
  36. //打印SQL
  37. echo M()->_sql();

二、更新

  1. $data = array();
  2. $data['name'] = 'ThinkPHP';
  3. $data['email'] = 'ThinkPHP@gmail.com';
  4. M("User")->where('id=5')->save($data); // 根据条件更新记录
  5.  
  6. //原生sql执行修改、删除
  7. $Model = new \Think\Model() // 实例化一个model对象 没有对应任何数据表
  8. $Model->execute("update think_user set name='thinkPHP' where status=1");

三、删除

  1. M("User")->where('id=5')->delete(); // 删除id为5的用户数据

四、插入

  1. $data['name'] = 'ThinkPHP';
  2. $data['email'] = 'ThinkPHP@gmail.com';
  3. M("User")->add($data);
  4.  
  5. // 批量添加数据
  6. $dataList[] = array('name'=>'thinkphp','email'=>'thinkphp@gamil.com');
  7. $dataList[] = array('name'=>'onethink','email'=>'onethink@gamil.com');
  8. $User->addAll($dataList);

五、接受参数、跳转、重定向、判断请求类型、ajax返回、显示页面

  1. //判断请求类型
  2. IS_GET IS_POST IS_AJAX
  3.  
  4. //接受参数 I方法是ThinkPHP用于更加方便和安全的获取系统输入变量,可以用于任何地方,用法格式如下:
  5. //I('变量类型.变量名/修饰符',['默认值'],['过滤方法或正则'],['额外数据源'])
  6. I('post.name','','htmlspecialchars'); // 采用htmlspecialchars方法对$_POST['name'] 进行过滤,如果不存在则返回空字符串
  7.  
  8. //跳转、重定向
  9. //系统的\Think\Controller类内置了两个跳转方法success和error,用于页面跳转提示,而且可以支持ajax提交。
  10. //success和error方法的第一个参数表示提示信息,第二个参数表示跳转地址,第三个参数是跳转时间(单位为秒),例如:
  11. // 操作完成3秒后跳转到 /Article/index
  12. $this->success('操作完成','/Article/index',3);
  13. // 操作失败5秒后跳转到 /Article/error
  14. $this->error('操作失败','/Article/error',5);
  15.  
  16. //Controller类的redirect方法可以实现页面的重定向功能。
  17. //redirect方法的参数用法和U函数的用法一致(参考URL生成部分),例如:
  18. //重定向到New模块的Category操作
  19. $this->redirect('New/category', array('cate_id' => 2), 5, '页面跳转中...');
  20. //上面的用法是停留5秒后跳转到New模块的category操作,并且显示页面跳转中字样,重定向后会改变当前的URL地址。
  21. //如果你仅仅是想重定向要一个指定的URL地址,而不是到某个模块的操作方法,可以直接使用redirect函数重定向,例如:
  22. //重定向到指定的URL地址
  23. $this->redirect('/New/category/cate_id/2', 5, '页面跳转中...');
  24.  
  25. //ajax返回
  26. //ThinkPHP可以很好的支持AJAX请求,系统的\Think\Controller类提供了ajaxReturn方法用于AJAX调用后返回数据给客户端。并且支持JSON、JSONP、XML和EVAL四种方式给客户端接受数据,并且支持配置其他方式的数据格式返回。ajaxReturn方法调用示例:
  27. $data['status'] = 1;
  28. $data['content'] = 'content';
  29. $this->ajaxReturn($data,'json');
  30.  
  31. //显示页面
  32. $this->display();
  33. //或
  34. $this->display('模板地址');

六、模板标签

1、Volist

  1. //volist标签通常用于查询数据集(select方法)的结果输出,通常模型的select方法返回的结果是一个二维数组,可以直接使用volist标签进行输出。 在控制器中首先对模版赋值:
  2. $list = M('User')->limit(10)->select();
  3. $this->assign('list',$list);
  4.  
  5. //在模版定义如下,循环输出用户的编号和姓名:
  6. <volist name="list" id="vo">
  7. {$vo.id}:{$vo.name}<br/>
  8. </volist>
  9.  
  10. //支持输出查询结果中的部分数据,例如输出其中的第5~15条记录
  11. <volist name="list" id="vo" offset="5" length='10'>
  12. {$vo.name}
  13. </volist>
  14.  
  15. //输出循环变量
  16. <volist name="list" id="vo" key="k" >
  17. {$k}.{$vo.name}
  18. </volist>
  19.  
  20. //如果没有指定key属性的话,默认使用循环变量i,例如:
  21. <volist name="list" id="vo" >
  22. {$i}.{$vo.name}
  23. </volist>
  24.  
  25. //如果要输出数组的索引,可以直接使用key变量,和循环变量不同的是,这个key是由数据本身决定,而不是循环控制的,例如:
  26. <volist name="list" id="vo" >
  27. {$key}.{$vo.name}
  28. </volist>

2、Foreach

  1. //foreach标签类似与volist标签,只是更加简单,没有太多额外的属性,例如:
  2. <foreach name="list" item="vo">
  3. {$vo.id}:{$vo.name}
  4. </foreach>
  5. name表示数据源 item表示循环变量。
  6.  
  7. 可以输出索引,如下:
  8. <foreach name="list" item="vo" >
  9. {$key}|{$vo}
  10. </foreach>
  11.  
  12. 也可以定义索引的变量名
  13. <foreach name="list" item="vo" key="k" >
  14. {$k}|{$vo}
  15. </foreach>

3、比较(eq或者equal、neq或者notequal、gt、egt、lt、elt、heq、nheq)

  1. //比较标签用于简单的变量比较,复杂的判断条件可以用if标签替换,比较标签是一组标签的集合,基本上用法都一致,如下:
  2. <比较标签 name="变量" value="值">
  3. 内容
  4. </比较标签>
  5. //通常比较标签的值是一个字符串或者数字,如果需要使用变量,只需要在前面添加“$”标志: 当vo对象的属性等于$a就输出
  6. <eq name="vo:name" value="$a">{$vo.name}</eq>

4、范围(in、notin、between、notbetween)

  1. //范围判断标签包括in notin between notbetween四个标签,都用于判断变量是否中某个范围。
  2. <in name="id" value="1,2,3">
  3.   id在范围内
  4. <else/>
  5.   id不在范围内
  6. </in>

5、IF

  1. <if condition="($name eq 1) OR ($name gt 100) "> value1
  2. <elseif condition="$name eq 2"/>value2
  3. <else /> value3
  4. </if>

  

  

  

TP3快速入门的更多相关文章

  1. Web Api 入门实战 (快速入门+工具使用+不依赖IIS)

    平台之大势何人能挡? 带着你的Net飞奔吧!:http://www.cnblogs.com/dunitian/p/4822808.html 屁话我也就不多说了,什么简介的也省了,直接简单概括+demo ...

  2. SignalR快速入门 ~ 仿QQ即时聊天,消息推送,单聊,群聊,多群公聊(基础=》提升)

     SignalR快速入门 ~ 仿QQ即时聊天,消息推送,单聊,群聊,多群公聊(基础=>提升,5个Demo贯彻全篇,感兴趣的玩才是真的学) 官方demo:http://www.asp.net/si ...

  3. 前端开发小白必学技能—非关系数据库又像关系数据库的MongoDB快速入门命令(2)

    今天给大家道个歉,没有及时更新MongoDB快速入门的下篇,最近有点小忙,在此向博友们致歉.下面我将简单地说一下mongdb的一些基本命令以及我们日常开发过程中的一些问题.mongodb可以为我们提供 ...

  4. 【第三篇】ASP.NET MVC快速入门之安全策略(MVC5+EF6)

    目录 [第一篇]ASP.NET MVC快速入门之数据库操作(MVC5+EF6) [第二篇]ASP.NET MVC快速入门之数据注解(MVC5+EF6) [第三篇]ASP.NET MVC快速入门之安全策 ...

  5. 【番外篇】ASP.NET MVC快速入门之免费jQuery控件库(MVC5+EF6)

    目录 [第一篇]ASP.NET MVC快速入门之数据库操作(MVC5+EF6) [第二篇]ASP.NET MVC快速入门之数据注解(MVC5+EF6) [第三篇]ASP.NET MVC快速入门之安全策 ...

  6. Mybatis框架 的快速入门

    MyBatis 简介 什么是 MyBatis? MyBatis 是支持普通 SQL 查询,存储过程和高级映射的优秀持久层框架.MyBatis 消除 了几乎所有的 JDBC 代码和参数的手工设置以及结果 ...

  7. grunt快速入门

    快速入门 Grunt和 Grunt 插件是通过 npm 安装并管理的,npm是 Node.js 的包管理器. Grunt 0.4.x 必须配合Node.js >= 0.8.0版本使用.:奇数版本 ...

  8. 【第一篇】ASP.NET MVC快速入门之数据库操作(MVC5+EF6)

    目录 [第一篇]ASP.NET MVC快速入门之数据库操作(MVC5+EF6) [第二篇]ASP.NET MVC快速入门之数据注解(MVC5+EF6) [第三篇]ASP.NET MVC快速入门之安全策 ...

  9. 【第四篇】ASP.NET MVC快速入门之完整示例(MVC5+EF6)

    目录 [第一篇]ASP.NET MVC快速入门之数据库操作(MVC5+EF6) [第二篇]ASP.NET MVC快速入门之数据注解(MVC5+EF6) [第三篇]ASP.NET MVC快速入门之安全策 ...

随机推荐

  1. 网络安全从入门到精通 ( 第二章-5) 后端基础PHP—简介及基本函数-下

    本文内容: 循环语句 PHP获取表单信息 PHP操作Mysql语句 语法SQL注入 1,循环语句: for循环: 语法:for($x=0,$x<10;$x++){执行语句;} 注意:$x++,先 ...

  2. 基于java的OpenCV环境搭建

    一.OpenCV下载安装 OpenCV可以在官网下载链接https://opencv.org/releases.html 选择相应的版本下载保存就好(不过官网下载有时候真滴慢还会连不上.....)网盘 ...

  3. ECCV 2018 目标检测 | IoU-Net:将IoU的作用发挥到极致

    常见的目标检测算法缺少了定位效果的学习,IoU-Net提出IoU predictor.IoU-guided NMS和Optimization-based bounding box refinement ...

  4. MySQL对JSON类型UTF-8编码导致中文乱码探讨

    前言 继上文发表之后,结合评论意见并亲自验证最终发现是编码的问题,但是对于字符编码还是有点不解,于是乎,有了本文,我们来学习字符编码,在学习的过程中,我发现对于MySQL中JSON类型的编码导致数据中 ...

  5. leetcode 每日签到 409. 最长回文串

    题目: 最长回文串 给定一个包含大写字母和小写字母的字符串,找到通过这些字母构造成的最长的回文串. 在构造过程中,请注意区分大小写.比如 "Aa" 不能当做一个回文字符串. 注意: ...

  6. Hadoop调度器

    一.FIFO调度器(先进先出调度) 上图为FIFO调度器的执行过程示意图.FIFO Scheduler是最简单也是最容易理解的调度器,它缺点是不适用于共享集群.大的应用可能会占用所有集群资源,这就导致 ...

  7. GBDT梯度提升树算法及官方案例

    梯度提升树是一种决策树的集成算法.它通过反复迭代训练决策树来最小化损失函数.决策树类似,梯度提升树具有可处理类别特征.易扩展到多分类问题.不需特征缩放等性质.Spark.ml通过使用现有decisio ...

  8. IO多路复用(IO Multiplexing)

    什么是IO多路复用 为什么要有IO多路复用 作者总结 遵循学习新知识的三部曲:是什么?为什么?怎么用? 作者前言:IO多路复用本质上是网络通信过程中的一个技术名词. 什么是IO多路复用 一个用机场管理 ...

  9. Apache服务的主要目录和配置文件详解

    Apache服务的主要目录和配置文件详解 2014-01-14 19:05:14 标签:httpd配置文件详解 apache配置文件 httpd配置文件 apache文件目录 原创作品,允许转载,转载 ...

  10. PTA-7-20 表达式转换(中缀转后缀,带括号,负数,小数转换)

    本题考点:中缀表达式转后缀表达式. 难点: 带有小数的数字 数字可能带有正负号 题目描述: 算术表达式有前缀表示法.中缀表示法和后缀表示法等形式.日常使用的算术表达式是采用中缀表示法,即二元运算符位于 ...