• 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');
  • 相关阅读:
    Ubuntu 找不到ARM64 的源
    解决ubuntu下error occurred during the signature verification
    Ubuntu 16.04LTS 更新清华源
    Optimizing Deep Learning Computation Graphs with TensorRT
    Runtime Integration with TensorRT
    Python之爬虫
    缓存,队列(Redis,RabbitMQ)
    Web框架之Tornado
    Django之ORM性能优化
    Django进阶(补充)
  • 原文地址:https://www.cnblogs.com/chenshanhe/p/7200301.html
Copyright © 2020-2023  润新知