學習ThinkPHP的第21天---關聯預載入、關聯統計

ThinkPHP關聯預載入

  預載入的做用是減小執行SQL語句,進而提高程序的性能。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 求最小值
相關文章
相關標籤/搜索