【问题标题】:create multidimentional array from mysql data using Laravel 5使用 Laravel 5 从 mysql 数据创建多维数组
【发布时间】:2015-12-04 19:43:40
【问题描述】:

我正在尝试从 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);
        }
    }
}

它给了我一个数组,但数组中只有最后一个孩子。我的猜测是它在循环中被覆盖了。我需要一个包含所有父母的数组,然后如果父母有一个孩子设置 children 键,并且在其中我需要该键下的每个子数组。

【问题讨论】:

    标签: php mysql laravel multidimensional-array laravel-5


    【解决方案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);
        }
    }
    

    【讨论】:

    • 嗨@aldrin27 我试过了,但得到了以下错误。间接修改App\Page的重载元素无效
    • 你能print_r($pageNav);吗?
    • 我发布了我得到的错误。我无法 print_r 数组,因为使用 Laravel 它会发布大量隐藏字段,由于字符限制,我什至无法将其复制并粘贴到此处,但我确实发布了上面收到的错误。
    • 我只想知道$pageNav = Page::where('parent_id', 0)->orderBy('nav_order', 'asc')->get();的返回数据
    • 如果可以的话,我会粘贴它,但对于 Laravel,它不是一个简单的数据转储。我不能只是 print_r 复制和粘贴。它有数千个字符。
    猜你喜欢
    • 1970-01-01
    • 2013-09-02
    • 1970-01-01
    • 2014-06-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多