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_idgroup_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();