TP3快速入门

一、查询

  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 37echo M()->_sql();

二、更新

1$data = array(); 2$data['name'] = 'ThinkPHP'; 3$data['email'] = 'ThinkPHP@gmail.com'; 4M("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");

三、删除

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

 四、插入

1$data['name'] = 'ThinkPHP'; 2$data['email'] = 'ThinkPHP@gmail.com'; 3M("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//判断请求类型 2IS_GET IS_POST IS_AJAX 3 4//接受参数 I方法是ThinkPHP用于更加方便和安全的获取系统输入变量,可以用于任何地方,用法格式如下: 5//I('变量类型.变量名/修饰符',['默认值'],['过滤方法或正则'],['额外数据源']) 6I('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> 5name表示数据源 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>
点赞
收藏

评论区

加载中...

相关推荐

java设计模式1

1:单例模式简介  单例模式是一种常用的软件设计模式,它确保某个类只有一个实例,而且自行实例化并向整个系统提供唯一的实例。总而言之就是在系统中只会存在一个对象,其中的数据是共享的  特点:    单例类只能有一个实例,所以一般会用static进行修释。    单例类必须自己创建自己的唯一实例。也就是在类中要new一个自己。    单例类必

java中static的作用详解

java中static关键字表示静态的意思,主要用于以下三点,static成员变量,static成员方法和static块。在类中如果定义了static类型的对象(变量或者方法),在java虚拟机(JVM)加载类时,该对象就会被实例化,在使用的时候就不需要再去实例化,直接调用就可以了。常与private,public搭配使用。下面详细说一下这三部分。1

java8新特性

Stream将List转换为Map,使用Collectors.toMap方法进行转换背景:User类,类中分别有id,name,age三个属性。List集合,userList,存储User对象1、指定keyvalue,value是对象中的某个属性值。 Map<Integer,StringuserMap1userList.str

java中多态的实现机制

多态的概念:  简单来说就是事物在运行过程中存在的不同状态,即父类或接口定义的引用变量指向子类或具体实现类的实例对象。程序调用方法在运行期才进行动态绑定,而不是引用变量的类型中定义的方法。多态存在的前提:1、存在继承关系,子类继承父类;2、子类重写父类的方法;3、父类引用指向子类对象。具体实例:1、定义一个父类:Animal

(面试常问)4种单例设计模式的总结(内含代码以及分析)

单例设计模式:  单例模式,是一种常见的软件设计模式.在它的核心结构中只包含了一个被称为单例的特殊类.通过单例模式可以保证系统中只有该类的一个实例对象.优点:  实例控制:单例模式会阻止其它对象实例化其自己的单例对象的副本,从而确保所有对象都访问的是唯一的实例   灵活性:因为类控制了实例化过程,所以类可以很灵活的更改实

Java高级特性2

\TOC\1\.static关键字1.1类变量、类方法/static关键字类变量不用实例化,直接类名.属性名就可以使用,是类的一部分,被所有这个类的实例化所共享,也可以叫做静态变量如果想让一个类的所有实例共享数据,就用类变量!