Laravel和嵌套的foreach数据库查询错误

时间:2014-03-18 19:29:26

标签: php laravel laravel-4

我正在laravel上建立一个菜单。

在刀片布局中我有:

@foreach ($menu1 as $menu1)
{{$menu1->nome}}

            <div class="panel-group" id="accordion">
                <div class="panel panel-default">
                    <div class="panel-heading">
                        <h4 class="panel-title">

                            <a data-toggle="collapse" data-parent="#accordion" href="#collapseOne">
                                <span class="glyphicon glyphicon-chevron-down"></span>

                            </a>
                        </h4>
                    </div>            
                    <div id="collapseOne" class="panel-collapse collapse in">
                        <div class="panel-body">
                            <ul class="list-unstyled">
                    @foreach ($menu2 as $menu2)
                                <li> <a href="./"> {{$menu2->nome}} </a> </li>
                    @endforeach
                            </ul>
                        </div>
                    </div>
                </div>
 @endforeach

在我的控制器中我传递了2个查询。

public function menu($lingua)

{
    return View::make('index', ['menu1'=>DB::table('cat_nome')->join('lingua', 'cat_nome.id_lingua', '=', 'lingua.id') ->where('lingua.lingua','=',$lingua)->get(array('cat_nome.nome')),
                                'menu2' => DB::table('campo_nome')->join('lingua', 'campo_nome.id_lingua', '=', 'lingua.id') ->where('lingua.lingua','=',$lingua)->get(array('campo_nome.nome'))]
        );
}

我试图联合前线,一切正常。当我试图嵌套foreach时,我得到了

尝试获取非对象的属性

1 个答案:

答案 0 :(得分:1)

@foreach ($menu2 as $menu2)

这条线很可能是罪魁祸首。您不能在foreach循环中使用相同的变量名两次,并期望获得良好的结果。第二个应该是在循环的每次迭代期间将$menu2中的每个条目作为范围。

请参阅foreach documentation

尝试将循环更改为更像这样:

@foreach ($menu2 as $innerMenu)
    <li> <a href="./"> {{$innerMenu->nome}} </a> </li>
 @endforeach

我建议您也为外部菜单做同样的事情。