当我在Laravel 5.8中使用Join Query时返回重复数据

时间:2019-07-13 19:29:59

标签: php laravel distinct

当我尝试在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)

我知道这是一个简单的问题,但是尽管我做了很多研究,但仍无法解决。真的谢谢您的帮助。

1 个答案:

答案 0 :(得分: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();