課程
/后端開發
/PHP
/PHP無限級分類技術
mysql中 order by 是從左到右逐位比較的。后期給某個分類添加子類,根據fullpath排序就可能出現下圖這種情況,這種情況應該怎么解決???
如圖:
2015-11-14
源自:PHP無限級分類技術
正在回答
這個問題已經解決了。
1、因為mysql排序是從左到右逐位比較。后期添加分類,在排序的時候會出現斷層。解決辦法是除了第1位0外,在節點id前面使用0把id填充到固定位數,或者把所有位置上的id都填充到相同位數。例如:0,0000000001,0000000002;0000000000,0000000001,0000000002。
2、這樣插入分類數據path就是指fullpath(全路徑),在插入的時候就要把fullpath算出來。fullpath處理方法
????方法1:插入數據,獲取插入id,根據需求算出fullpath,更新path;
????方法2:自己維護id,在插入數據的時候就算出fullpath.?
3、不使用order by fullpath在mysql中進行排序,排序在后端完成或者前端(建議把數據交給前端,前端進行排序處理),這樣可以提高性能。
有更好的方法,希望大家提出來,一起進步
舉報
經典的遞歸實現和全路徑實現兩種方式實現無限分類
3 回答怎么能用id排序呢,id自增長,實際操作中,難免有增刪改查操作,按id排序就找不到實際的路徑了
3 回答有點業務上的糾結。這應該是現實中的問題吧
3 回答請問老師 無限分類和 全路徑無限分類 有什么區別啊
3 回答請問老師,什么時候能展示下分類和子分類的添加 修改 刪除,謝謝
2 回答concat(path,',',id)
Copyright ? 2025 imooc.com All Rights Reserved | 京ICP備12003892號-11 京公網安備11010802030151號
購課補貼聯系客服咨詢優惠詳情
慕課網APP您的移動學習伙伴
掃描二維碼關注慕課網微信公眾號
2015-11-16
這個問題已經解決了。
1、因為mysql排序是從左到右逐位比較。后期添加分類,在排序的時候會出現斷層。解決辦法是除了第1位0外,在節點id前面使用0把id填充到固定位數,或者把所有位置上的id都填充到相同位數。例如:0,0000000001,0000000002;0000000000,0000000001,0000000002。
2、這樣插入分類數據path就是指fullpath(全路徑),在插入的時候就要把fullpath算出來。fullpath處理方法
????方法1:插入數據,獲取插入id,根據需求算出fullpath,更新path;
????方法2:自己維護id,在插入數據的時候就算出fullpath.?
3、不使用order by fullpath在mysql中進行排序,排序在后端完成或者前端(建議把數據交給前端,前端進行排序處理),這樣可以提高性能。
有更好的方法,希望大家提出來,一起進步