数据归档显示

需求:显示一个级别,让下级在这个级别下面显示,也可以按时间归档处理,把某个时间段的放到一个时间里。大概格式如下:

php
laravel、thinkphp、file
mysql
select、insert、update
linux

方案:①首先需要把一级分类显示出来,然后在循环中根据id查询到它的子类再次循环输出;如下

@foreach($allcate as $d)                                                             #先循环输出上级
  <a href="{{url('cate/'.$d->cate_id)}}" target="_blank" ><h3>{{$d->cate_name}}</h3></a>          
  <p class="dateview">&nbsp;
  <?php $childcate = DB::table('category')->where('cate_pid',$d->cate_id)->get(); ?>                   #输出上级后根据id,在模板中查询所有下级           
    {{var_dump(count($childcate))}}
  @if(count($childcate) != 0)
  @foreach($childcate as $cc)                                                                          #模板循环输出下级
    <span><a href="{{url('cate/'.$cc->cate_id)}}">{{$cc->cate_name}}</a></span>
  @endforeach
  @else
    <span>暂无下级</span>
  @endif
  </p>
@endforeach

②在控制器对下级稍微处理一下,将所有下级作为一个数组存在查询到的上级数组中,也就是说先把所有的上级查询出来,遍历这个二维数组,即每一个数组都是一个上级的数组,在这个数组中添加一个字段用来存放它所有大下级,在模板中查询时将这个字段再次遍历,便得到了每一个下级。

  public function allcate(){
        $allcate = Category::where('cate_pid',0)->paginate(5);
        foreach ($allcate as $value) {                                           
            $child =  Category::where('cate_pid',$value->cate_id)->get();         #查询它所有的下级
            $value->childcate = $child;                          #将查到的所有下级(数组),作为新的字段存放到数组中
        }
        return view('home.allcate',compact('allcate'));                            #输出到模板中
    }

  然后,模板显示时不需要进行查询语句

    @foreach($allcate as $d)
    <a href="{{url('cate/'.$d->cate_id)}}" target="_blank" ><h3>{{$d->cate_name}}</h3></a>
    <p class="dateview">&nbsp;
      @if(count($d->childcate) != 0)
      @foreach($d->childcate as $cc)
      <span><a href="{{url('cate/'.$cc->cate_id)}}">{{$cc->cate_name}}</a></span>
      @endforeach
      @else
      <span>暂无下级</span>
      @endif
    </p>
    @endforeach

总结:

1、两种方法尽量使用第二种,在控制器中进行查询,模板直接循环输出,当然这里还需要优化将查询语句放到model中,这样比较符合规范。

2、其他数据归档都可以使用这种方法,比如按时间归档,需要将归档的时间先查询出来作为新的字段放到要显示的时间里,然后输出即可

posted @ 2018-08-17 20:33  进阶丶xiao路  阅读(259)  评论(0编辑  收藏  举报