最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

thinkphp5實現(xiàn)無限級分類

 更新時間:2019年02月18日 10:41:30   作者:知末隨未  
這篇文章主要為大家詳細(xì)介紹了thinkphp5實現(xiàn)無限級分類,具有一定的參考價值,感興趣的小伙伴們可以參考一下

tp5對分類數(shù)據(jù)表的信息讀取與展示,我們即可以控制器完成,也可以在對應(yīng)的模型中完成。本案例,我們在模型中完全成。況且,對數(shù)據(jù)表的增,刪改查操作,本來就是模型的本職工作。

首先聲明一下,我們采用遞歸的方式來實現(xiàn)無限分類。但無限分類的實現(xiàn),不是只是遞歸一種方式,還有一種是全路徑方式,也可以實現(xiàn),不過,這種方式通常用在全路徑導(dǎo)航菜單中。所以,這里我們還是用最常見的遞歸函數(shù)來實現(xiàn):無限分類。

首先我們先創(chuàng)建一個靜態(tài)方法:getCate,為什么要靜態(tài)方式,因為靜態(tài)方法執(zhí)行效率高,不需要實例化,而且,分類查詢是使用非常頻繁的操作,很多查詢都要依賴分類查詢的結(jié)果。

當(dāng)前的getCate方法,有三個參數(shù):

第一個是$pid,是父類的id,默認(rèn)為0,表示從頂開始查起。

第二個參數(shù)是返回的查詢結(jié)果,我們放在一個數(shù)組中返回,注意,這個變量是引入方式傳入的。

在遞歸函數(shù)中,返回結(jié)果有三種方式:

第一種就是大家比較熟悉的,使用全局變量$_GLOBALS[],這個方法有副作用,我們不用它;

第二種方式也不錯,是在函數(shù)中用static關(guān)鍵字,聲明一個靜態(tài)變量,它可以將每一次的遞歸執(zhí)行結(jié)果進行累計,最后再返回,非常好理解,但占用資源過多,執(zhí)行效率低;

第三種,就是采用引用參數(shù)的方式,來返回結(jié)果,這也是目前主流的技術(shù)。盡管理解起來有難度,但執(zhí)行效率是最高的,我們要玩,就玩大的,所以這里,我們就直接采用引用,來返回查詢結(jié)果。

第三個參數(shù),可以沒有,它是用來設(shè)置一下分類之間的層次顯示的,可以讓結(jié)果看上去更直觀清晰。

<?php
 
namespace app\admin\model;
 
use think\Collection;
use think\Model;
 
class Category extends Model
{
 //創(chuàng)建一個靜態(tài)方法getCate,來獲取分類信息
 
 /**
  * @param int $pid: 當(dāng)前分類的父id
  * @param array $result:引用返回值
  * @param int $blank:設(shè)置分類之間的顯示提示
  */
 public static function getCate($pid=0, &$result=[], $blank=0)
 {
  //1.分類表查詢:$pid
  $res = self::all(['pid'=>$pid]);
 
  //2.自定義分類名稱前面的提示信息
  $blank += 2;
 
  //3.遍歷分類表
  foreach ($res as $key => $value) {
 
   //3-1自定義分類名稱的顯示格式
   $cate_name = '|--'.$value->cate_name;
   $value->cate_name = str_repeat('&nbsp;',$blank).$cate_name;
 
   //3-2將查詢到的當(dāng)前記錄保存到結(jié)果$result中
   $result[] = $value;
 
   //3-3關(guān)鍵:將當(dāng)前記錄的id,做為下一級分類的父id,$pid,繼續(xù)遞歸調(diào)用本方法
   self::getCate($value->id, $result, $blank);
  }
 
  //4.返回查詢結(jié)果,調(diào)用結(jié)果集類make方法打包當(dāng)前結(jié)果,轉(zhuǎn)為二維數(shù)組返回
  return Collection::make($result)->toArray();
 }
}

控制器中調(diào)用代碼:

public function edit(Request $request)
{
 //1.獲取一下分類id
 $cate_id = $request -> param('id');
 
 //2.查詢要更新的數(shù)據(jù)
 $cate_now = CategoryModel::get($cate_id);
 
 //3.遞歸查詢所有的分類信息
 $cate_level = CategoryModel::getCate();
 
 //4.模板賦值
 $this -> view -> assign('cate_now', $cate_now);
 $this -> view -> assign('cate_level', $cate_level);
 
 
 //5.渲染模板
 return $this -> view -> fetch('category_edit');
}

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • thinkPHP5框架路由常用知識點匯總

    thinkPHP5框架路由常用知識點匯總

    這篇文章主要介紹了thinkPHP5框架路由常用知識點,整理匯總了thinkPHP5框架路由相關(guān)概念、原理及操作技巧,需要的朋友可以參考下
    2019-09-09
  • laravel框架中控制器的創(chuàng)建和使用方法分析

    laravel框架中控制器的創(chuàng)建和使用方法分析

    這篇文章主要介紹了laravel框架中控制器的創(chuàng)建和使用方法,結(jié)合實例形式詳細(xì)分析了laravel框架控制器的原理、創(chuàng)建、使用方法及相關(guān)注意事項,需要的朋友可以參考下
    2019-11-11
  • CI框架學(xué)習(xí)筆記(一) - 環(huán)境安裝、基本術(shù)語和框架流程

    CI框架學(xué)習(xí)筆記(一) - 環(huán)境安裝、基本術(shù)語和框架流程

    本文是CI框架學(xué)習(xí)筆記的第一篇,主要介紹了CI框架的環(huán)境安裝,基本術(shù)語以及框架流程,非常的詳細(xì),有需要的朋友可以參考下
    2014-10-10
  • PHP迭代器實現(xiàn)斐波納契數(shù)列的函數(shù)

    PHP迭代器實現(xiàn)斐波納契數(shù)列的函數(shù)

    斐波納契數(shù)列通常做法是用遞歸實現(xiàn),當(dāng)然還有其它的方法。這里現(xiàn)學(xué)現(xiàn)賣,用PHP的迭代器來實現(xiàn)一個斐波納契數(shù)列,幾乎沒有什么難度,只是把類里的next()方法重寫了一次。注釋已經(jīng)寫到代碼中,也是相當(dāng)好理解的
    2013-11-11
  • 編寫PHP程序檢查字符串中的中文字符個數(shù)的實例分享

    編寫PHP程序檢查字符串中的中文字符個數(shù)的實例分享

    這篇文章主要介紹了編寫PHP程序檢查字符串中的中文字符個數(shù)的實例分享,文中利用了PHP中mb_strlen函數(shù)的實現(xiàn)原理,需要的朋友可以參考下
    2016-03-03
  • 6種php上傳圖片重命名的方法實例

    6種php上傳圖片重命名的方法實例

    本文提供了6種php上傳圖片重命名的方法并對6種方法做了比較,肯定有一種合適你用的。
    2013-11-11
  • PHP反射機制案例講解

    PHP反射機制案例講解

    這篇文章主要介紹了PHP反射機制案例講解,本篇文章通過簡要的案例,講解了該項技術(shù)的了解與使用,以下就是詳細(xì)內(nèi)容,需要的朋友可以參考下
    2021-07-07
  • Laravel5.4簡單實現(xiàn)app接口Api Token認(rèn)證方法

    Laravel5.4簡單實現(xiàn)app接口Api Token認(rèn)證方法

    這篇文章主要介紹了Laravel5.4簡單實現(xiàn)app接口Api Token認(rèn)證,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-08-08
  • Linux系統(tǒng)下安裝PHP7.3版本

    Linux系統(tǒng)下安裝PHP7.3版本

    這篇文章主要介紹了Linux系統(tǒng)下安裝PHP7.3版本,本文含有詳細(xì)的過程和配置過程,可以幫助你正確的配置php開發(fā)環(huán)境,需要的朋友可以參考下
    2021-06-06
  • php使用event擴展的io復(fù)用測試的示例

    php使用event擴展的io復(fù)用測試的示例

    這篇文章主要介紹了php使用event擴展的io復(fù)用測試的示例,幫助大家更好的理解和使用php,感興趣的朋友可以了解下
    2020-10-10

最新評論

龙胜| 丹江口市| 武安市| 从江县| 晋州市| 安国市| 乌拉特后旗| 太仓市| 金寨县| 垦利县| 白银市| 金沙县| 马龙县| 炎陵县| 杂多县| 离岛区| 南宁市| 永兴县| 顺昌县| 峨山| 佛冈县| 河源市| 咸丰县| 舒城县| 岑巩县| 镇沅| 雅安市| 张家界市| 察哈| 祁阳县| 黄浦区| 正宁县| 许昌市| 宁德市| 广汉市| 信宜市| 奇台县| 遂川县| 新民市| 错那县| 清水县|