一、查询

  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快速入门的更多相关文章

  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. mysql那些事之索引篇

    mysql那些事之索引篇 上一篇博客已经简单从广的方面介绍了一下mysql整体架构以及物理结构的内容. 本篇博客的内容是mysql的索引,索引无论是在面试还是我们日常工作中都是非常的重要一环. 索引是 ...

  2. Python基础篇_实例练习(二)

    问题1:假设有同学A,A每周在工作日进步,周末退步,问一年(365天)后A同学是一年前的几倍? 工作日进步由用户输入,周末下降0.01即1% deyup = eval(input()) deyfact ...

  3. try_catch_return

    1.情况一(try中有return,finally中没有return): public class TryTest{ public static void main(String[] args){ S ...

  4. 微商贴吧企业新浪微博怎么找客户_怎么做好seo

    写的几篇文章对于seo的引流量方面的 怎么做好网络seo优化之SEO项目团队组建 品牌营销_中小企业网络推广的办法 微商怎么引流客源?微商没有客户的解决办法?下 微商怎么引流客源?微商没有客户的解决办 ...

  5. redis相关命令及应用场景

    Redis的应用场景 (1)         配合关系型数据库做高速缓存 l  高频次,热门访问的数据,降低数据库IO l  高频次,热门访问的数据,降低数据库IO (2)         由于其拥有 ...

  6. sql 语句系列(字符串的遍历嵌入删除与统计)[八百章之第十一章]

    遍历字符串 我觉得首先要提出一个疑问: 一个数据库本身就是用于存储的,遍历字符串究竟有何意义? 先看如何实现的,毕竟sql service 是没有for循环,也没有loop和while的. selec ...

  7. 为arm-unknown-linux-gnueabi-gcc工具链添加常用库(zlib、libpng、libjpeg、libtiff、libtool)(转载)

    主机环境: RHEL6.0 kernel 2.6.32-220.2.1.el6.i686 gcc-4.4.6   1.zlib http://sourceforge.net/projects/libp ...

  8. 李飞飞团队最新论文:基于anchor关键点的类别级物体6D位姿跟踪

    6-PACK: Category-level 6D Pose Tracker with Anchor-Based Keypoints 论文地址: 6-PACK: Category-level 6D P ...

  9. Servlet(四)----Request

    ##  Request 1.request对象和response对象的原理 1.request和response对象是由服务器创建的.我们来使用他们. 2.request对象是来获取请求消息,resp ...

  10. C# 基础知识系列- 4 面向对象

    面向对象 面向对象是一个抽象的概念,其本质就是对事物以抽象的方式建立对应的模型. 简单来讲,比如我有一只钢笔,那么我就可以通过分析,可以得到 这只钢笔的材第是塑料,品牌是个杂牌 ,里面装的墨是黑色的, ...