2014-07-24 214 views
0

我想使类别子类别为餐馆的菜单。Codeigniter:类别和子类别

子类别有像pricedescription类别附加字段仅具有idname。所以我决定和这两张桌子一起去。

Categories -> ID, NAME 
Subcategoires -> ID, NAME, DESCRIPTION, PRICE, CATEGORIES_ID, 

现在我正在尝试构造它们来制作一个漂亮的菜单。

我也在使用DataMapper for Codeigniter。

到目前为止,我有这样的:

$categories = new Category_model(); 
$subcategories = new Subcategory_model(); 
$categories->get(); 
$subcategories->get(); 

$recent_categories = array(); 
$recent_subcategories = array(); 

foreach ($categories as $category) 
{ 
    $single_category = array 
    (
     'category_id' => $category->id, 
     'category_name' => $category->name, 
    ); 

    foreach ($subcategories as $subcategory) 
    { 
     if ($subcategory->categories_id == $category->id) 
     { 
      $single_subcategory = array 
      (
       'subcategory_id' => $subcategory->id, 
       'subcategory_name' => $subcategory->name, 
       'subcategory_description' => $subcategory->description, 
       'subcategory_price' => $subcategory->price, 
      ); 
     } 
    } 

    array_push($recent_categories, $single_category); 
    array_push($recent_subcategories, $single_subcategory); 
} 

这几乎是一个小问题工作正在打印既SUBCATEGORIES两个CATEGORIES。哪里需要每个只有一个。

所以现在正在寻找这样的:

ALCOHOL 
    - VODKA 
    - COLA 
NON-ALCOHOL 
    - VODKA 
    - COLA 

,显然我希望它是VODKAALCOHOLCOLANON-ALCOHOL

有人可以请我指出如何使其工作?谢谢。

回答

0

也许你应该立即填充数组。

假设您的内容是这样的..

$categories = array("alcohol", "non-alcohol"); 
    $subcategories = array(
        (object)array("category" => "alcohol", "name" => "vodka"), 
        (object)array("category" => "non-alcohol", "name" => "cola") 
        ); 

    foreach ($categories as $category) 
    { 
     $recent_categories[] = $category; 

     foreach ($subcategories as $subcategory => $subcat) 
     {    
      $recent_subcategories[$subcat->name][] = $subcat->name; 
     } 
    } 

这将导致:

array(2) { 
    [0]=> 
    string(7) "alcohol" 
    [1]=> 
    string(11) "non-alcohol" 
} 

array(2) { 
    ["alcohol"]=> 
    string(5) "vodka" 
    ["non-alcohol"]=> 
    string(4) "cola" 
} 
+0

这将覆盖同一类别的最后一个产品名称,如果该类别有多个产品 –

+0

是的,我看到但我希望信息在数据库中,而不是硬编码 – Unsparing

0
$categories = array("alcohol", "non-alcohol"); 
$subcategories = array(
       (object)array("category" => "alcohol", "name" => "vodka"), 
       (object)array("category" => "non-alcohol", "name" => "cola") 
       ); 
$recent_subcategories = array(); 
foreach ($categories as $category) 
{ 
    $recent_categories[] = $category; 

    foreach ($subcategories as $subcategory => $subcat) 
    {    
     $recent_subcategories[$subcat->name][] = $subcat->name; 
    } 
} 

失放的是

阵列( '分类'= > array(Subcategories) )