Laravel:在视图中显示groupby的标题

时间:2018-03-07 22:18:34

标签: php mysql laravel

我想显示一个联系人列表,按"类型"分组db表中的列。我能够显示所有联系人,但是如何显示每个'类型的标题?每组以上?我应该使用groupby还是distinct?

期望的输出:

类型1(为h2)

联系信息
联系信息
联系信息

类型2

联系信息
联系信息
联系信息

等...

表格结构:
类型|名称|电话|网址|等等

路线:



`Route::get('/contacts', function () {
$contacts = DB::table('contacts')->get();
return view('pages.contacts', ['contacts' => $contacts]);
});`




视图:



`@if(isset($contacts))
@foreach($contact as $key => $contacts)
<h2>type name</h2>
<strong>{{$contacts->name}}</strong><br>
{{$contacts->phone}}<br>
{{$contacts->url}}
@endforeach
@endif`
&#13;
&#13;
&#13;

2 个答案:

答案 0 :(得分:0)

尝试将联系人分解为控制器中的两种类型。然后将它们传递给视图。它看起来像这样:

Route::get('/contacts', function () {
   $contactsType1 = DB::table('contacts')->where('type', '=', 'type1')->get();
   $contactsType2 = DB::table('contacts')->where('type', '=', 'type2')->get();
   return view('pages.contacts', $contactsType1, $contactsType2);
});

然后,您的页面上会有两个for循环,每个循环都相互独立:

@foreach($contactsType1 as $contact)
  --- display info as needed ----
@endforeach
-----
@foreach($contactsType2 as $contact)
  --- display info as needed ----
@endforeach

答案 1 :(得分:0)

您可以对contacts表中的所有类型进行分组,并查询每种类型

$group_types =  DB::table('contacts')->select('type')->groupBy('type')->get();

        @if(isset($group_types))
            @foreach($group_types as $type)
                @foreach(\DB::table('contacts')->where('type',$type)->get() as $contacts)
                    <h2>type name</h2>
                    <strong>{{$contacts->name}}</strong><br>
                    {{$contacts->phone}}<br>
                    {{$contacts->url}}
                 @endforeach
            @endforeach
        @endif