1. 程式人生 > >laravel 使用遞迴實現無限分類(轉自oschina姚棉偉原創)

laravel 使用遞迴實現無限分類(轉自oschina姚棉偉原創)

實現規格:一個新聞無線分類系統最終實現的效果如下
ㅣㅡㅡ體育新聞
ㅣㅡㅡㅡㅡ足球新聞
ㅣㅡㅡㅡㅡ籃球新聞
ㅣㅡㅡㅡㅡ其他體育
ㅣㅡㅡ娛樂新聞
ㅣㅡㅡㅡㅡ電影
ㅣㅡㅡㅡㅡ音樂
ㅣㅡㅡ科技新聞
ㅣㅡㅡㅡㅡ智慧手機
ㅣㅡㅡㅡㅡㅡㅡ小米手機
ㅣㅡㅡㅡㅡㅡㅡ華為手機

laravel Model層實現獲取分類資訊(使用遞迴)

<?php

namespace App\Model;

use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\Collection;

class
Category extends Model {
protected $table = 'category'; protected $primaryKey='CategoryID'; public $timestamps=false; //使用遞迴獲取分類 (正式函式) public function getCategory($sourceItems, $targetItems, $pid=0){ foreach ($sourceItems as $k => $v) { if($v->pid == $pid
){ $targetItems[] = $v; $this->getCategory($sourceItems, $targetItems, $v->CateID); } } } //使用遞迴獲取分類資訊測試函式 (測試正式函式) public function getCategoryTest($sourceItems, $targetItems, $pid=0, $str='ㅣ'){ $str .= 'ㅡㅡ'; foreach
($sourceItems as $k => $v) { if($v->pid == $pid){ $v->CateName = $str.$v->CateName; $targetItems[] = $v; $this->getCategoryTest($sourceItems, $targetItems, $v->CateID, $str); } } } //使用遞迴獲取分類資訊 (正式函式) public function getCategoryInfo(){ $sourceItems = $this->get(); $targetItems = new Collection; $this->getCategory($sourceItems, $targetItems, 0); return $targetItems; } //測試函式 (測試正式函式) public function getCategoryInfoTest(){ $sourceItems = $this->get(); $targetItems = new Collection; $this->getCategoryTest($sourceItems, $targetItems); return $targetItems; } }

laravel ctroller層實現測試效果

<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;
use App\Http\Requests;
use Illuminate\Support\Facades\Input;
use Illuminate\Support\Facades\Validator;
use App\Model\Category;
use Illuminate\Database\Eloquent\Collection;
use DB;

class CategoryCtroller extends Controller
{
    public function index(){
        $category = new Category;
        $items = $category->getCategoryInfoTest();
        foreach ($items as $key => $item) {
            dump($item->CateName);
        }

    }
}

訪問相關的控制器就可看見要實現的無限分類的效果

相關推薦

laravel 使用實現無限分類oschina原創

實現規格:一個新聞無線分類系統最終實現的效果如下 ㅣㅡㅡ體育新聞 ㅣㅡㅡㅡㅡ足球新聞 ㅣㅡㅡㅡㅡ籃球新聞 ㅣㅡㅡㅡㅡ其他體育 ㅣㅡㅡ娛樂新聞 ㅣㅡㅡㅡㅡ電影 ㅣㅡㅡㅡㅡ音樂 ㅣㅡㅡ科技新聞 ㅣㅡㅡㅡㅡ智慧手機 ㅣㅡㅡㅡㅡㅡㅡ小米手機 ㅣㅡㅡ

php不用實現無限分類資料的樹形格式化

<?php /**  * 此方法由@Tonton 提供  * http://my.oschina.net/u/918697  * @date 2012-12-12   */ FUNCTION genTree5($items) {      foreach ($items AS $item)       

php實現無限分類生成下拉列表

php自定義函式之遞迴實現無限分類生成下拉列表,不用每次都從資料庫讀取資料。 程式碼:/*—————————————————— */ //– 遞迴實現無限分類生成下拉列表函式 //– $tpl->assign('sort_list',createSortOptio

php實現無限分類樹(最新版)發自php中文網的大家講道理

php遞迴實現無限級分類樹(最新版) 程式碼如下: /** * 將資料格式化成樹形結構 * @author Xuefen.Tong * @param array $items * @return array */ function gen

php實現無限分類牛逼

轉載路徑:http://www.php.cn/php-weizijiaocheng-353267.html 無限級樹狀圖可以說是無限級欄目的一個顯著特徵,我們接下來就來看看兩種不同的寫法。 一.資料庫設計 1 2 3

php用實現無限分類獲取樹形結構

 表中的資料如下: 遞迴的方法:  /** * 用遞迴獲取子類資訊 * $data 所有分類 * $parent_id 父級id * $level 層級 * $result 分好類的陣列 */ function getChild($data,$parent

php 實現無限分類

public function getTree($data, $pId) { $tree = []; foreach($data as $k => $v) { if($v['parentid'] == $pId)

php實現無限分類

一.資料庫設計123456789101112131415161718192021222324252627282930313233343536373839CREATE TABLE `bg_cate` (`cate_Id` int(30) unsigned NOT NULL AU

thinkphp實現無限分類

在專案的common.php下面加如下函式 function Cate($arr,$parent=0,$level=0,$html="&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;

java實現商品分類例子

在對商品進行分類時,類別表會出現父節點 遞迴查詢本節點的id及孩子節點的id /** * 遞迴查詢本節點的id及孩子節點的id * @param categoryId* @return*/public ServerResponse<List<Integer

利用實現深拷貝常見面試題之一

淺拷貝和深拷貝的區別: 淺拷貝 : 只是將資料中所有的資料引用下來,依舊指向同一個存放地址,拷貝之後的資料修改之後,也會影響到原資料的中的物件資料 深拷貝: 將資料中所有的資料拷貝下來,對拷貝之後的資料進行修改不會影響到原資料 實現思路: 將要拷貝的資料

java編碼轉換過程http://cmsblogs.com/?p=1475

tex src bytes .com 設定 界面 console 獲取 java程序 一、java編碼轉換過程(轉自http://cmsblogs.com/?p=1475) 我們總是用一個java類文件和用戶進行最直接的交互(輸入、輸出),這些交互內容包含的文字可能會包含

我是如何從程式設計師一步一步走向產品經理人人都是產品經理

這是一篇長文,我花了差不多30分鐘才看完,也是我見過有史以來最長最完整的一篇關於程式設計師轉型產品經理的文章。創辦人人都是產品經理以來,每天都有很多人問我如何轉型做產品經理、轉型產品經理會遇到哪些問題,其實我一直沒能回答好這個問題,因為我從運營轉型產品經理的過程太順利,並且轉型的過程也沒有做太多的

Java分散式中文分片語件 - word分詞 https //github com/ysc/word

分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!http://blog.csdn.net/jiangjunshow 也歡迎大家轉載本篇文章。分享知識,造福人民,實現我們中華民族偉大復興!        

GlusterFS技術概要分析oschina

1.      GlusterFS 概述 GlusterFS是Scale-Out儲存解決方案Gluster的核心,它是一個開源的分散式檔案系統,具有強大的橫向擴充套件能力,通過擴充套件能夠支援數PB儲存容量和處理數千客戶端。G

Python3.X下安裝Scrapy 魚c論壇作者lumber2388779

相信很多同學對於爬蟲需要安裝Scrapy時候,不想特地去安裝2.X版本我也是這樣一個懶人,我從網上找到這篇文章在Python3.x下安裝和測試Scrapy爬網站根據上邊的教程可以在我的電腦上正確安裝Scrapy電腦環境:Win7 64位系統Python版本:3.6以下轉自h

CentOS7 軟體包安裝與解除安裝猿課阿銘老師

1. rpm工具 rpm Redhat Package Manager, 設計理念是開放的,不僅僅是在RedHat平臺上,在SUSE上也是可以使用的。 rpm包名字構成由-和.分成了若干部分,如abrt-cli-2.0.8-15.el6.centos.i686.rpm,abrt-cli是包 名,2.0.8-1

清華大學MOOC《作業系統》第4講:“實驗1-系統軟體啟動過程”總結張慕暉部落格

課程內容概述 這節課主要介紹了一些和Lab1相關的內容。 系統啟動過程 BIOS bootloader 段機制 作業系統的載入 C語言的一些相關知識 函式呼叫的實現 GCC內聯彙編 x86架構下的中斷處理過程 系統啟動過程 BIO

連結串列翻轉的圖文講解與迭代直接迴圈翻轉指標兩種實現

連結串列的翻轉是程式設計師面試中出現頻度最高的問題之一,常見的解決方法分為遞迴和迭代兩種。最近在複習的時候,發現網上的資料都只告訴了怎麼做,但是根本沒有好好介紹兩種方法的實現過程與原理。所以我覺得有必要好好的整理一篇博文,來幫忙大家一步步理解其中的實現細節。   我們知道

php 用實現無限級別分類

<?php header("Content-type:text/html; charset=utf-8"); /**  *   * @category contry_category 實現一個無限級別分類,類似種類的劃分,常用在欄目導航  *   */ /**  +-------------------