2017-07-28 131 views
1

我有一個類別表,它由'parent_id''categoryid'組織。我需要將它組織在一個列表中,在那裏我將父類與子類分組。如何在laravel中使用兩個foreach?

我已創建此代碼。

在控制器中,我得到了類別的值。

public function index() 
    { 
     $cat1 = Category::where('erp_parentid', '=', 0)->get(); 
     foreach($cat1 as $categoria1){ 
     $cat2 = Category::where('erp_parentid', '=', $categoria1->erp_categoryid)->get(); 
     return view('admin.categories')->with('cat1', $cat1)->with('cat2', $cat2); 
     } 
    } 

$cat2是兒童類,我在父類的categoryid得到其值。

但是,當我將值傳遞給視圖,所有父類別採取與第一個相同的值。

enter image description here 我使用的代碼,在視圖中顯示的值:

<div class="container"> 
    <div class="row"> 
    <ul class="list-group"> 
     @foreach($cat1 as $value) 
     <a data-toggle="collapse" data-target="#catfilha{{$value->erp_categoryid}}"><li class="list-group-item">{{$value->erp_name}}</li></a> 
     <ul id="catfilha{{$value->erp_categoryid}}" class="collapse"> 
     @foreach($cat2 as $value2) 
     <li>{{$value2->erp_name}}</li> 
     @endforeach 
     </ul> 
     @endforeach 
    </ul> 
    </div> 
</div> 

我搜索了此網站上的類似案件,卻發現沒有任何相似之處,有什麼建議?先謝謝你。

回答

2

您應該在模型中定義關係並在視圖中調用它們。嘗試是這樣的:

在分類型號:

public function getParent() 
{ 
    return self::where('erp_parentid', '=', $this->erp_categoryid)->get(); 
} 

在控制器:

public function index() 
{ 
    $cat1 = Category::where('erp_parentid', '=', 0)->get(); 
    return view('admin.categories')->with('cat1', $cat1); 
} 

在查看:

<div class="container"> 
    <div class="row"> 
    <ul class="list-group"> 
     @foreach($cat1 as $value) 
     <a data-toggle="collapse" data-target="#catfilha{{$value->erp_categoryid}}"><li class="list-group-item">{{$value->erp_name}}</li></a> 
     <ul id="catfilha{{$value->erp_categoryid}}" class="collapse"> 
     @foreach($value->getParent() as $value2) 
     <li>{{$value2->erp_name}}</li> 
     @endforeach 
     </ul> 
     @endforeach 
    </ul> 
    </div> 
</div> 

在代碼中,return語句裏面循環,因此cat2將始終是cat1的第一項中的類別。

+0

它工作完美,謝謝! –

+0

我很高興它幫助! :) – Laerte