摘要:一般說到無限級分類菜單之類的東西,大家我的數據表設計一般是這樣的更多字段衣物上衣褲子西褲長西褲短西褲襯衫其中,表示父分類的。
一般說到無限級分類、菜單之類的東西,大家 (我) 的數據表設計一般是這樣的
id | parent_id | title | 更多字段... |
---|---|---|---|
1 | 0 | 衣物 | ... |
2 | 1 | 上衣 | ... |
3 | 1 | 褲子 | ... |
4 | 3 | 西褲 | ... |
5 | 4 | 長西褲 | ... |
6 | 4 | 短西褲 | ... |
7 | 2 | 襯衫 | ... |
其中,parent_id表示父分類的id。由此可知,衣物分類下有上衣和褲子兩個二級分類;而褲子還有西褲這個三級分類……以此類推
這種設計比較常見 (就我所知),但缺點很明顯。
例如需要顯示例如下面這樣的面包屑導航時:
衣物 > 褲子 > 西褲
就不得不進行多次循環(huán)
再例如,需要顯示所有分類并表示層級時:
也不得不進行多次循環(huán)
那么,如何快速實現上述的常見功能呢?
實現首先,示例表設計:
id | title | path | level | 更多字段... |
---|---|---|---|---|
1 | 衣物 | 0 | 0 | ... |
2 | 上衣 | 0,1 | 1 | ... |
3 | 褲子 | 0,1 | 1 | ... |
4 | 西褲 | 0,1,3 | 2 | ... |
5 | 長西褲 | 0,1,3,4 | 3 | ... |
6 | 短西褲 | 0,1,3,4 | 3 | ... |
7 | 襯衫 | 0,1,2 | 2 | ... |
其中,path表示父級id列表。例如西褲的0,1,3就表示衣物 > 褲子
實現面包屑時只要取出path字段的值,然后用,分割,得到id列表
再用where id in (1,3)即可
需要顯示所有分類并表示層級時,使用下面的SQL:
SELECT *,concat(path,",",id) AS paths FROM menu ORDER BY paths
看到的結果是這樣的:
id | title | path | level | paths |
---|---|---|---|---|
1 | 衣物 | 0 | 0 | 0,1 |
2 | 上衣 | 0,1 | 1 | 0,1,2 |
7 | 襯衫 | 0,1,2 | 2 | 0,1,2,7 |
3 | 褲子 | 0,1 | 1 | 0,1,3 |
4 | 西褲 | 0,1,3 | 2 | 0,1,3,4 |
5 | 長西褲 | 0,1,3,4 | 3 | 0,1,3,4,5 |
6 | 短西褲 | 0,1,3,4 | 3 | 0,1,3,4,6 |
那么,直接取出結果輸出即可。level字段就是層級的意思
例如在PHP中,可以用str_repeat("--> ", $level)直接輸出表示層級的前綴
并且連順序都排好了,是不是很方便呢?
本文首發(fā)于我的博客 超能小紫,如果喜歡請常來玩哦
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規(guī)行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/31962.html
摘要:分層數據探索例如無限級分類多級菜單省份城市引言什么是分層數據類似于樹形結構,除了根節(jié)點和葉子節(jié)點外,所有節(jié)點都有一個父節(jié)點和一個或多個子節(jié)點。接下來我會先通過一般方法和遞歸方法來實現無限極分類,然后再通過兩種數據模型來談一談分層數據的處理。 分層數據Hierarchical Data探索(例如:無限級分類、多級菜單、省份城市) 引言 什么是分層數據? 類似于樹形結構,除了根節(jié)點和葉子節(jié)...
摘要:需求最近遇到一個需求,平時被后臺慣著直接返回了樹形結構給到前端,前端對這種嵌套類型的數據如地區(qū)的級聯或菜單的樹形結構省掉了一層處理。當然,沒用好就相當于一堆廢鐵,甚至將導致一些不可預料的結果。相比起遞歸,我更喜歡這種方法。 需求 最近遇到一個需求,平時被后臺慣著直接返回了樹形結構給到前端,前端對這種嵌套類型的數據(如地區(qū)的級聯或菜單的樹形結構)省掉了一層處理。換了個后臺小哥哥返回了扁平...
摘要:第三條同樣需要遞歸,因為通過一個分類,數據庫中只存儲了其直屬父類,需要通過遞歸到頂級分類才能獲取到它們之間的所有分類信息。 原文發(fā)表于我的博客: https://blog.kaciras.net/article/36 在一些系統(tǒng)中,對內容進行分類是必需的功能。比如電商就需要對商品做分類處理,以便于客戶搜索;論壇也會分為很多板塊;門戶網站、也得對網站的內容做各種分類。 分類對于一個內容展...
閱讀 2619·2021-10-12 10:12
閱讀 778·2019-08-29 17:25
閱讀 2779·2019-08-29 17:24
閱讀 3202·2019-08-29 17:19
閱讀 1792·2019-08-29 15:39
閱讀 3030·2019-08-26 16:50
閱讀 1983·2019-08-26 12:17
閱讀 2694·2019-08-26 12:16