<?php
namespace Admin\Controller;
use Think\Controller;
class MainController extends Controller
{
public function showList()
{
echo "大苹果商城";
} public function test()
{
//数据访问
//造模型对象
$nation = D("Nation"); //查询
//$a = $nation->select(); //查所有,返回关联数组
//$a = $nation->select("n001,n002,n003"); //通过主键查
//$a = $nation->find("n002"); //查一条数据 //连贯操作
//$a = $nation->where("name='汉族' or name='回族'")->select(); //加条件
//$a = $nation->table("Info")->select(); //切换表
//$a = $nation->field("name")->select(); //查询指定字段
//$a = $nation->order("code desc")->select(); //排序
//$a = $nation->limit(3,3)->select(); //分页
//$a = $nation->page(3,3)->select(); //分页
//$a = $nation->table("Car")->field("Brand,avg(Price)")->group("Brand")->select(); //分组
//$a = $nation->table("Car")->field("Brand,avg(Price)")->group("Brand")->having("avg(Price)>50")->select(); //$a = $nation->alias('a')->field("b.Code as 'code',b.Name as 'name',a.name as '民族'")->join("Info b on a.Code=b.Nation")->select(); //$a = $nation->table("car")->distinct(true)->field("brand")->select(); //$a = $nation->where("code='n003'")->getField("name"); //获取某一列的值 //$a = $nation->table("car")->sum(Price);
//var_dump($a); //$sql = "update nation set name='矮人族' where code='n001'";
//$a = $nation->query($sql); //执行查询
//$a = $nation->execute($sql); //执行其他操作
//var_dump($a); }
}

/数据访问
        //造模型对象
        $nation = D("Nation");
        
        //查询
        //$a = $nation->select(); //查所有,返回关联数组
        //$a = $nation->select("n001,n002,n003"); //通过主键查
        //$a = $nation->find("n002"); //查一条数据

//连贯操作

1.where方法的用法是ThinkPHP查询语言的精髓,也是ThinkPHP ORM的重要组成部分和亮点所在,可以完成包括普通查询、表达式查询、快捷查询、区间查询、组合查询在内的查询操作。where方法的参数支持字符串和数组,虽然也可以使用对象但并不建议。

//$a = $nation->where("name='汉族' or name='回族'")->select(); //加条件

2.table方法也属于模型类的连贯操作方法之一,主要用于指定操作的数据表。

一般情况下,操作模型的时候系统能够自动识别当前对应的数据表,所以,使用table方法的情况通常是为了:

  1. 切换操作的数据表;
  2. 对多表进行操作;

//$a = $nation->table("Info")->select(); //切换表

3.field方法属于模型的连贯操作方法之一,主要目的是标识要返回或者操作的字段,可以用于查询和写入操作。

  1、用于查询

  //$a = $nation->field("name")->select(); //查询指定字段

  可以给某个字段设置别名,例如:

  $Model->field('id,nickname as name')->select();

  字段排除

  如果我希望获取排除数据表中的content字段(文本字段的值非常耗内存)之外的所有字段值,我们就可以使用field方法的排除功能,例如下面的方式就可以实现所说的功能:

  $Model->field('content',true)->select();

  2、用于写入

  除了查询操作之外,field方法还有一个非常重要的安全功能--字段合法性检测(注意:该功能3.1版本开始才能支持)。field方法结合create方法使用就可以完成表单提交的字段合法性检测,如果我们在表单提交的处理方法中使用了:

  $Model->field('title,email,content')->create();

  即表示表单中的合法字段只有title,emailcontent字段,无论用户通过什么手段更改或者添加了浏览器的提交字段,都会直接屏蔽。因为,其他是所有字段我们都不希望由用户提交来决定,你可以通过自动完成功能定义额外的字段写入。

4.order方法属于模型的连贯操作方法之一,用于对操作的结果排序。

//$a = $nation->order("code desc")->select(); //排序

5.分页

LIMIT:limit方法也是模型类的连贯操作方法之一,主要用于指定查询和操作的数量,特别在分页查询的时候使用较多。ThinkPHP的limit方法可以兼容所有的数据库驱动类的。

PAGE:page方法也是模型的连贯操作方法之一,是完全为分页查询而诞生的一个人性化操作方法。

对于大数据表,尽量使用limit限制查询结果,否则会导致很大的内存开销和性能问题。

//$a = $nation->limit(3,3)->select(); //分页  limit里面只给一个参数是限制查询条数,两个参数代表跳过几条查几条

//$a = $nation->page(3,3)->select(); //分页  page的两个参数代表第几页和每页几条

6.GROUP方法也是连贯操作方法之一,通常用于结合合计函数,根据一个或多个列对结果集进行分组 。group方法只有一个参数,并且只能使用字符串。

//$a = $nation->table("Car")->field("Brand,avg(Price)")->group("Brand")->select(); //分组

7.HAVING方法也是连贯操作之一,用于配合group方法完成从分组的结果中筛选(通常是聚合条件)数据。having方法只有一个参数,并且只能使用字符串。

//$a = $nation->table("Car")->field("Brand,avg(Price)")->group("Brand")->having("avg(Price)>50")->select();

8.alias用于设置当前数据表的别名,便于使用其他的连贯操作例如join方法等。

//$a = $nation->alias('a')->field("b.Code as 'code',b.Name as 'name',a.name as '民族'")->join("Info b on a.Code=b.Nation")->select();

9.DISTINCT 方法用于返回唯一不同的值 。(去重)

//$a = $nation->table("car")->distinct(true)->field("brand")->select();

10.//$a = $nation->where("code='n003'")->getField("name"); //获取某一列的值

11.JOIN方法也是连贯操作方法之一,用于根据两个或多个表中的列之间的关系,从这些表中查询数据。

12.cache方法用于查询缓存操作,也是连贯操作方法之一。

cache可以用于selectfindgetField方法,以及其衍生方法,使用cache方法后,在缓存有效期之内不会再次进行数据库查询操作,而是直接获取缓存中的数据,关于数据缓存的类型和设置可以参考缓存部分。

$Model->cache(true,60,'xcache')->find();

表示对查询结果使用xcache缓存,缓存有效期60秒。

cache方法可以指定缓存标识:

  1. $Model = M('User');
  2. $Model->cache('key',60)->find();

指定查询缓存的标识可以使得查询缓存更有效率。

这样,在外部就可以通过S方法直接获取查询缓存的数据,例如:

  1. $Model = M('User');
  2. $result = $Model->cache('key',60)->find();
  3. $data = S('key');

tp框架查询的更多相关文章

  1. Tp框架查询分页显示与全部查询出来显示运行时间快慢有区别吗?

    8:08:01 青春阳光 2017/4/7 8:08:01 大神在吗? Tp框架查询分页显示与全部查询出来显示运行时间快慢有区别吗? 青春阳光 2017/4/7 8:08:20 还有个问题,上传到pu ...

  2. ThinkPhp框架:有条件的数据库查询、tp框架的其他知识

    上一篇的随笔写的是基本操作,现在可以做一些高级操作,例如有条件的查询数据,有分页的条件查询数据 一.一个条件的查询数据 查询数据自然是先要显示出数据,然后根据条件进行查询数据 (1)显示出表的数据 这 ...

  3. TP框架中field查询字段

    TP框架中field查询字段 不是fields 也不是files !!!! 不是fields 也不是files !!!! 不是fields 也不是files !!!! 不是fields 也不是file ...

  4. TP框架中模糊查询实现

    TP框架中模糊查询实现 $where['g.name'] = array('like','%'.$groupname.'%'); 表达式查询 上面的查询条件仅仅是一个简单的相等判断,可以使用查询表达式 ...

  5. tp框架where条件查询数据库

    tp框架where条件查询数据库 Where 条件表达式格式为: $map['字段名'] = array('表达式', '操作条件'); 其中 $map 是一个普通的数组变量,可以根据自己需求而命名. ...

  6. tp框架数据查询,增删改

    select()是数据模型的一个指定方法,可以获得数据表的数据信息 返回一个二维数组信息,当前数据表的全部数据信息 $obj = D();  创建对象 $obj -> select();  查询 ...

  7. tp框架实现ajax

    不墨迹,直接进主题. tp框架实现ajax 首先,我们先做一个testajax.html用来显示页面(只是一个简单的下拉列表^_^) <!DOCTYPE html PUBLIC "-/ ...

  8. tp框架的增删改查

    首先,我们来看一下tp框架里面的查询方法: 查询有很多种,代码如下: <?php namespace Admin\Controller; use Think\Controller; class ...

  9. tp框架之自动验证表单

    tp框架的create自动加载表单的方法可以自动根据自己定义的要求来验证表单里面的内容,但是由于是在后台执行代码,会拖慢程序运行速度,所以还是建议通过前端js来进行判断,后台只进行数据库的查询以及传值 ...

随机推荐

  1. usb驱动开发1之学习准备

    此系列是http://blog.csdn.net/fudan_abc/博文的整理,同时加入了自己的理解.很敬佩fudan_abc的文章,仔细学习和分析受益很多.注:fundan_abc所分析linux ...

  2. GeoServer 常见问题总结

    Geoserver安装环境 Geoserver在部署发布服务时,经常会遇到如下问题,现总结如下: 1.忘记了GeoServer Web Admin Page的登陆用户名和密码怎么办? 存储位置:C:\ ...

  3. 解答WPF中ComboBox SelectedItem Binding不上的Bug

    正在做一个打印机列表,从中选择一个打印机(System.Printing) <ComboBox Width="150" ItemsSource="{Binding ...

  4. 20145208 实验五 Java网络编程

    20145208 实验五 Java网络编程 实验内容 1.用书上的TCP代码,实现服务器与客户端. 2.客户端与服务器连接 3.客户端中输入明文,利用DES算法加密,DES的秘钥用RSA公钥密码中服务 ...

  5. Github个人使用经历

    Github是什么? 简单来说Git是一个分布式的版本控制系统.GitHub可以托管各种git库,并提供一个web界面,但与其它像 SourceForge或Google Code这样的服务不同,Git ...

  6. 初识Groovy

    Groovy是一种基于JVM(Java虚拟机)的敏捷开发语言,它结合了Python.Ruby和Smalltalk的许多强大的特性,Groovy 代码能够与 Java 代码很好地结合,也能用于扩展现有代 ...

  7. 【MPI学习1】简单MPI程序示例

    有了apue的基础,再看mpi程序多进程通信就稍微容易了一些,以下几个简单程序来自都志辉老师的那本MPI的书的第七章. 现在ubuntu上配置了一下mpich的环境: http://www.cnblo ...

  8. 【MyEclipse 2015】 逆向破解实录系列【1】(纯研究)

    声明 My Eclipse 2015 程序版权为Genuitec, L.L.C所有. My Eclipse 2015 的注册码.激活码等授权为Genuitec, L.L.C及其付费用户所有. 本文只从 ...

  9. 如何使用Iveely的数据存储引擎 Iveely Database

    Iveely 数据存储引擎是为Iveely 搜索引擎提供数据存储的机制. 适用于:频繁数据插入.数据读取.数据更改或者删除数据不适合Iveely Database,存储结构是按照搜索引擎数据存储要求( ...

  10. Android--下拉框

    一. 实现效果图如下 Android 中的下拉框为Spinner 组件,其效果图如上图片 二. 实现代码 布局代码如下 <?xml version="1.0" encodin ...