Return 当我在 Laravel 5.8 中使用连接查询时重复数据
Return duplicate data when i use Join Query in Laravel 5.8
当我尝试在 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');
}
和blade代码:
@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
输出如下:
组名-1
组名-2
组名-2
组名-2
组名-2
组名-2
组名-2
组名-2
正如我所说,我有 2 个组名(Groupname-1 和 Groupname-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();
当我尝试在 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');
}
和blade代码:
@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
输出如下:
组名-1
组名-2
组名-2
组名-2
组名-2
组名-2
组名-2
组名-2
正如我所说,我有 2 个组名(Groupname-1 和 Groupname-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();