使用Laravel 5从mysql数据创建多维数组

时间:2015-09-09 01:01:15

标签: php mysql laravel multidimensional-array 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 个答案:

答案 0 :(得分: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);
    }
}