当我尝试在laravel 5.8中使用内部联接查询时,返回了重复的数据。
数据库中有2个组和8个产品。当我要从数据库中打印组名时,而不是打印2个组名,而是将要打印的产品数量(8个组名)打印到屏幕上。
我尝试了Laravel-> distinct()和其他一些方法,但是不起作用。
那是我的控制器代码:
$user_id = Auth::id();
$captions = DB::table('ab_captions')->where('ab_groups.user_id', $user_id)->where('ab_captions.user_id', $user_id)->join('ab_groups', 'ab_captions.group_id', '=', 'ab_groups.id')->distinct()->get();
if ($captions == !NULL) {
return view('default.captions', ['captions' => $captions]);
} else {
return view('default.captions');
}
和刀片代码:
@if(!empty($captions))
@foreach($captions as $showcaptions)
<div class="list-body" style="margin-top: 5px;">
<a href="{{ url('captions/'.$showcaptions->groupname) }}" class="item-title _500">{{ $showcaptions->groupname }}</a>
</div>
@endforeach
@endif
并输出如下:
Groupname-1
Groupname-2
Groupname-2
Groupname-2
Groupname-2
Groupname-2
Groupname-2
Groupname-2
我说过,我有2个组名(Groupname-1和Groupname-2)
我知道这是一个简单的问题,但是尽管我做了很多研究,但仍无法解决。真的谢谢您的帮助。
答案 0 :(得分:2)
您需要使用GROUP BY
子句,根据group_id
或group_name
分组结果
$captions = DB::table('ab_captions')->where('ab_groups.user_id', $user_id)->where('ab_captions.user_id', $user_id)->join('ab_groups', 'ab_captions.group_id', '=', 'ab_groups.id')->groupBy('ab_captions.group_id')->get();