我想显示一个联系人列表,按"类型"分组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;
答案 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