学习ThinkPHP的第21天---关联预载入、关联统计

ThinkPHP关联预载入

  预载入的作用是减少执行SQL语句,进而提升程序的性能。

public function join(){
//用于监听SQL
     Db::listen(function ($sql, $time, $explain) {
            // 记录SQL
            echo $sql . ‘ [‘ . $time . ‘s]<br>‘;
            // 查看性能分析结果
            //dump($explain);
      });
//$brand = Brand::all([3,4]);//未预载入  程序执行了5句SQL语句
$brand = Brand::with(‘goods‘)->select([3,4]);//预载入后  程序执行了4句SQL语句
  foreach($brand as $b){
      foreach($b->goods as $good){
          echo $good->goods_name.":".$good->price."元<br>";
      }
  }
}    

ThinkPHP关联统计

    关联统计只能用在一对多和一对多上,一对一的话还有上面好统计的。。。关联统计有相关的统计函数,除了whitCount()函数以外其他的统计函数都需要指定字段!!!

统计商品对应的数量

public function join(){
  $brand = Brand::withCount(‘goods‘)->select([3,4]);
  foreach($brand as $b){
    //“方法名+_count”为系统自动生成的自动用于存储统计的值,也可自定义
    echo "品牌:"$b->brand_name."有"$b->goods_count."个商品<br>":
  }
}

统计商品中的最大值withMax()

public function join(){
    $brand = Brand::withMax(‘good‘,‘price‘)->select();
    foreach($brand as $value){
       echo $value->brand_name"的品牌中最贵的商品价格为:".$value->goods_max;
    }
}

其它的统计方法

其它的统计方法有一下几种,其使用方法与上面类似

关联统计的方法 描述
withSum 求和
withAvg 求平均值
withMax 求最大值
withMin 求最小值

原文地址:https://www.cnblogs.com/MingGyGy-Castle/p/11964952.html

时间: 2024-10-06 11:42:57

学习ThinkPHP的第21天---关联预载入、关联统计的相关文章

Java学习作业(14.4.21)

前三次作业都是基础语法.真的好水啊.从这次开始记录. 1.编写Java程序,把当前目录下扩展名为txt的文件的扩展名全部更名为back. 1 import java.io.*; 2 import java.lang.*; 3 4 5 public class Home { 6 7 public void reName(String path, String from, String to) { 8 File f = new File(path); //声明File对象,用于导入修改路径 9 Fi

学习ThinkPHP框架必须了解的知识点(一)

1.框架:有大量的类.方法.函数按一定的逻辑组成的集合: 2.MVC(Model-View-Controller):即模型-视图-控制器这种编程模式:  M->Model:实体层,它主要是对数据库的操作:每一个Model.cs文件对于一张数据表,和它相应的数据库库操作:  V->View:视图层,可以简单的理解为模板,主要是展示作用:  C->Controller:控制层(控制器),对数据进行分析.过滤:它向上连接视图层,向它提供从数据口读取的数据,向下连接实体层,控制数据的读取.  M

学习ThinkPHP必须理解的知识(二)——ThinkPHP路由

ThinkPHP支持URL路由功能,要启用路由功能,需要设置ROUTER_ON 参数为true.开启路由功能后,系统会自动进行路由检测,如果在路由定义里面找到和当前URL匹配的路由名称,就会进行路由解析和重定向.路由功能需要定义路由定义文件,位于项目的配置目录下面,文件名为routes.php,定义格式: PHP代码 Return Array( // 第一种方式 常规路由 'RouteName'=>array('模块名称','操作名称','参数定义','额外参数'), // 第二种方式 泛路由

如何做LR自动关联和手动关联?

一.什么时候需要关联   1.关联的含义        关联的含义A(correlation):在脚本回放过程中,客户端发出请求,通过关联函数所定义的左右边界值(也就是关联规则),在服务器所响应的内容中查找,得到相应的值,已变量的形式替换录制时的静态值,从而向服务器发出正确的请求,这种动态获得服务器响应内容的方法被称作关联. 关联的含义B(correlation):就是把脚本中某些写死的代码(hard_coded)数据,转变成撷(xie)取自服务器所送的.动态的.每次都不一样的数据. 其实关联也

Loadrunner脚本自动关联和手动关联

关于Loadrunner关联一.什么时候需要关联 1.关联的含义        关联(correlation):在脚本回放过程中,客户端发出请求,通过关联函数所定义的左右边界值(也就是关联规则),在服务器所响应的内容中查找,得到相应的值,已变量的形式替换录制时的静态值,从而向服务器发出正确的请求,这种动态获得服务器响应内容的方法被称作关联.        其实关联也属于一同特殊的参数化,只是与一般的参数化有些不同        一般的参数化的参数来源于一个文件.一个定义的table.通过sql写

LoadRunner-关联(自动关联和手动关联)

使用LR录制脚本,新建课程:每次新建课程都会产生一个新的courseid和partid,直接使用录制的脚本执行是不行的.所以用到了关联. 注:关联分手动和自动关联,自动关联搜索出一些不必要关联的数据,有些关联有时扫不出.所以最后我使用的是手动关联才成功的. 方法一:replay后会自动进行关联扫描,或者使用菜单工具"Scan Script for Correlations"进行自动关联(如下图) 扫描结果查看点击"show/hide output window" 再

预载入和JavaScript Image()对象

很多high-res图像真的可以使 Web 站点更加整洁.但是它们也会使站点的访问速度变慢——图像是文件,文件使用带宽,带宽直接与等待时间相关.是该了解如何通过一个叫做图像预载入(preloading)的技巧来提高 Web 站点的访问速度的时候了. 图像预载入 对于浏览器载入图像来说,只有在对图像发送一个 HTTP请求之后,它们才会被浏览器载入,对图像的 HTTP 请求要么使用 <img> 标记,要么通过方法调用实现.如果使用 JavaScript 脚本来处理在 mouseover 事件时交换

Hibernate一对多单向关联和双向关联映射方法及其优缺点 (待续)

一对多关联映射和多对一关联映射实现的基本原理都是一样的,既是在多的一端加入一个外键指向一的一端外键,而主要的区别就是维护端不同.它们的区别在于维护的关系不同: 一对多关联映射是指在加载一的一端数据的同时加载多的一端的数据 多对一关联映射是指在加载多的一端数据的同时加载一的一端的数据 而单向一对多关联映射是在一的一端维护关系的,具有以下的缺点: 必须先保存多的一端后才可以保存一的一端,所以在保存多的一端时多的一端不知道一的一端是否 存在相应的数据,所以只能将维护的关系字段设置为null,如果为非空

Servlet学习的两个案例之网站访问次数的统计

一.统计次数的Servlet源码 package com.shanrengo; import java.io.IOException; import javax.servlet.ServletContext; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.