zoukankan      html  css  js  c++  java
  • tp框架查询

    <?php
    namespace AdminController;
    use ThinkController;
    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');
  • 相关阅读:
    linux之awk命令
    HDU 2097 Sky数 进制转换
    HDU 2077 汉诺塔IV
    HDU 2094 产生冠军 dfs加map容器
    HDU 2073 叠框
    HDU 2083 简易版之最短距离
    HDU 2063 过山车 二分匹配
    天梯 1014 装箱问题
    天梯 1214 线段覆盖
    天梯 1098 均分纸牌
  • 原文地址:https://www.cnblogs.com/sq45711478/p/6211749.html
Copyright © 2011-2022 走看看