我正在用PHP創建一個基本的購物車,並且想知道,以無限子類別的層次結構格式存儲和生成類別列表的最佳方式是什麼?什麼是存儲和生成類別層次結構的最有效方式?
當前我加載的主要類別,然後foreach
我從數據庫等子類別,這在一個大型網站上將創建超過100個查詢。
那麼最好的辦法是什麼?
我的繼承人目前MySQL表結構:
cat_id
cat_name
cat_desc
cat_parent_id
status
priority
我的目標查詢。
我正在用PHP創建一個基本的購物車,並且想知道,以無限子類別的層次結構格式存儲和生成類別列表的最佳方式是什麼?什麼是存儲和生成類別層次結構的最有效方式?
當前我加載的主要類別,然後foreach
我從數據庫等子類別,這在一個大型網站上將創建超過100個查詢。
那麼最好的辦法是什麼?
我的繼承人目前MySQL表結構:
cat_id
cat_name
cat_desc
cat_parent_id
status
priority
我的目標查詢。
WordPress的做到這一點非常好:
見:http://codex.wordpress.org/File:WP3.0-ERD.png和http://codex.wordpress.org/WordPress_Taxonomy
如果你走這條路線 這codex page有斂類別的一些問題查詢邏輯,你可能會發現有用(related stack post)
關鍵在於具有類別的表有一個條目,因此您可以讓它知道該類別是否具有父類別(允許您將該表加入到自身中)。
退房這個帖子:Category Hierarchy (PHP/MySQL)
它使用一個查詢來獲取所有類別的數據庫,然後操縱陣列創建子類別。我修改了在Codeigniter中使用的答案,效果很好。如果你想使用Codeigniter,可以在這裏發佈修改後的代碼。
查看我的[回覆](http://stackoverflow.com/a/11497724/1446794)到[這個問題](http://stackoverflow.com/q/11497202/1446794)您可以使用一些遞歸函數這將消除在循環中爲每個類別調用數據庫的需要。 – 2012-07-16 23:10:47
你的代碼支持多少個子類別級別?無限? – Adam 2012-07-16 23:12:56
是的,沒有「最大深度」,它會像數據中最深的嵌套類別那樣深入。 – 2012-07-16 23:15:19