2015-09-09 135 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