2015-09-09 52 views
1

我想從MySQL結果創建一個多維數組。這是一個父母的孩子關係。像這樣的東西。使用Laravel 5創建來自mysql數據的多維數組

$navArr = array(); 
$pageNav = Page::where('parent_id', 0)->orderBy('nav_order', 'asc')->get(); 
foreach($pageNav as $parent) { 
    $navArr[$parent->page_id] = $parent; 
    pageNavChildren = Page::where('parent_id', $parent->page_id)->orderBy('nav_order', 'asc')->get(); 
    if($pageNavChildren) { 
     foreach($pageNavChildren as $child) { 
      $navArr[$parent->page_id]['childrens'] = array($child->page_id => $child); 
     } 
    } 
} 

它給了我一個數組,但數組只有最後一個孩子。我的猜測是它越過了寫在循環中。我需要一個包含所有父項的數組,然後如果父項有一個子項設置了子項,並且在它內部,我需要每個子項數組在這個項下。

回答

1

更改此:

if($pageNavChildren) { 
    foreach($pageNavChildren as $child) { 
      $navArr[$parent->page_id]['childrens'] = array($child->page_id => $child); 
     } 
    } 

要:

if($pageNavChildren) { 
    foreach($pageNavChildren as $child) { 
     $navArr[$parent->page_id]['childrens'][] = array($child->page_id => $child); 
    } 
} 
+0

嗨@ aldrin27我試過,但有以下錯誤。間接修改App \ Page的重載元素不起作用 – Scott

+0

你可以print_r($ pageNav);'? – aldrin27

+0

我發佈了我得到的錯誤。我無法打印數組,因爲使用Laravel它發佈了大量隱藏的字段,由於字符限制,我甚至無法將其複製並粘貼到此處,但我確實發佈了上面收到的錯誤。 – Scott