laravel無限極分類實現
學習使用laravel,一個list列表中一個分類中含有子分類這種情況的實現方法。這裏使用兩種方法。
第一種方法
模型操作使用回調函數處理數據
public function tree()
{
$category = $this->orderBy('cate_order','asc')->get();
return $this->getTree($category,'cate_name','id','cate_pid','0');
}
public function getTree($data,$filed_name,$filed_id,$filed_fid,$pid)
{
$arr = array();
foreach ($data as $k=>$v){
if ($v->$filed_fid==$pid){
$data[$k]['_'.$filed_name] =$data[$k][$filed_name];
$arr[]=$data[$k];
foreach ($data as $m =>$n){
if ($n ->$filed_fid == $v->$filed_id){
$data[$m]['_'.$filed_name] =" ┣".$data[$m][$filed_name];
$arr[]=$data[$m];
}
}
}
}
return $arr;
}
控制器操作
public function index()
{
$category = (new Category)->tree();
return view('admin.category.index')->with('category',$category);
}
頁面
@foreach($category as $v)
<tr>
<td class="tc">
</td>
<td class="tc">{{$v ->id}}</td>
<td>
<a href="#">{{$v ->_cate_name}}</a>
</td>
<td>{{$v ->cate_title}}</td>
<td>{{$v ->cate_view}}</td>
<td>
<a href="#">修改</a>
<a href="#">刪除</a>
</td>
</tr>
@endforeach
第二種方法
模型操作,(類似做無限級分類,使用遞歸處理數據)。
public function tree($cate_pid=0)
{
$category =Category::where('cate_pid',$cate_pid)->get(); //第一次做的時候get()後面加了toArray(),頁面遍歷數據時報錯遍歷的不是對象,去掉後可行
$arr = array();
if (sizeof($category) !=0){
foreach ($category as $k =>$datum) {
$datum['list'] = $this->tree($datum['id']);
$arr[]=$datum;
}
}
return $arr;
}
控制器操作
public function index()
{
$category = (new Category)->tree();
return view('admin.category.index')->with('category',$category);
}
視圖遍歷
@foreach($category as $v)
@if($v->cate_pid == 0)
<tr>
<td class="tc">{{$v ->id}}</td>
<td>
<a href="#">{{$v ->cate_name}}</a>
</td>
<td>{{$v ->cate_title}}</td>
<td>{{$v ->cate_view}}</td>
<td>
<a href="#">修改</a>
<a href="#">刪除</a>
</td>
</tr>
@foreach($v->list as $li2)
<tr>
<td class="tc">{{$li2 ->id}}</td>
<td>
<a href="#">{{$li2 ->cate_name}}</a>
</td>
<td>{{$li2 ->cate_title}}</td>
<td>{{$li2 ->cate_view}}</td>
<td>
<a href="#">修改</a>
<a href="#">刪除</a>
</td>
</tr>
@endforeach
@endif
@endforeach