簡體   English   中英

如何使用 php 創建菜單樹?

[英]How to create a menu tree using php?

我正在開發一個電子商務平台,管理員可以在其中管理菜單、類別和子類別。 現在,我想在大型菜單中顯示它。

Menu1
    Category1.1
        SubCategory1
        SubCategory2
    Category1.2
        SubCategory
Menu2
    Category2.1
        SubCategory1

這是我想出的一個可能的結構。 我有 2 個數據庫表 - 菜單、類別。 在類別中,有一個名為sub_category的列,我在其中使用,分隔符存儲子類別值。

現在,在運行以下查詢后 -

$data = DB::select('SELECT m.id AS mId, m.name AS menu, 
m.meta_keywords AS menu_keywords, m.meta_description AS menu_description, 
c.id AS cId, c.name AS category, c.sub_category, c.meta_keywords AS
category_keywords, c.meta_description AS category_description 
FROM `menu` AS m LEFT JOIN `category` AS c ON c.menuId = m.id 
WHERE m.is_publish = 1 AND c.is_publish = 1');

我得到了結果。 點擊

現在,我想建立一棵樹,我可以得到這樣的結果 -

"id" => 1,
"name" => "Fashion"
"category" => [
    1 => [
        "cId" => 1,
        "category" => "Men"
        "sub_category" => "Shirt, T-shirt"
    ],
    2 => [
        "cId" => 2,
        "category" => "Women"
        "sub_category" => ""
    ],
] 

請幫助我找出解決方案。 先感謝您。

根據您的數據庫結構和要求,您可以使用以下 function -

public function menuTree($data){
        $menuId = $menu = $sub = $op = array();
        foreach($data as $d){
            if(in_array($d->mId, $menuId)){
                $sub['cId'] = $d->cId;
                $sub['category'] = $d->category;
                $sub['sub_category'] = $d->sub_category;
                $sub['category_keywords'] = $d->category_keywords;
                $sub['category_description'] = $d->category_description;
                $menu[$d->mId]['category'][] = $sub;
            } else {
                $menuId[] = $d->mId;
                $op['id'] = $d->mId;
                $op['menu'] = $d->menu;
                $op['menu_keywords'] = $d->menu_keywords;
                $op['menu_description'] = $d->menu_description;
                $menu[$d->mId] = $op;
                if($d->cId != NULL){
                    $sub['cId'] = $d->cId;
                    $sub['category'] = $d->category;
                    $sub['sub_category'] = $d->sub_category;
                    $sub['category_keywords'] = $d->category_keywords;
                    $sub['category_description'] = $d->category_description;
                    $menu[$d->mId]['category'][] = $sub;
                }
            }
        }
        return $menu;
    }

我仍然相信會有更好的解決方案。 希望這對你有用。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM