Mysql Laravel 5.6如何从列中获取重复数据

Mysql Laravel 5.6如何从列中获取重复数据,mysql,laravel,Mysql,Laravel,我要打印每个主题id的计数 show.blade.php @foreach($questions as $question) {{ $question->topic_id }} @endforeach ExamsController@index $topics = Topic::all(); return view('exams.show', compact('topics','questions')); 只需要对重复数据进行计数和打印 | id | topic_id | | ---|

我要打印每个
主题id
的计数

show.blade.php

@foreach($questions as $question)
{{ $question->topic_id }}
@endforeach
ExamsController@index

$topics = Topic::all();
return view('exams.show', compact('topics','questions'));
只需要对重复数据进行计数和打印

| id | topic_id |
| ---|:--------:|
| 1  |     4    |
| 2  |     9    |
| 3  |     5    |
| 4  |     5    |
| 5  |     2    |
| 6  |     4    |
| 7  |     5    |
我想要的结果是每个主题id重复的计数。就像

| id | topic_id |
| ---|:--------:|
| 1  |     4    |
| 6  |     4    |
2

| id | topic_id |
| ---|:--------:|
| 3  |     5    |
| 4  |     5    |
| 7  |     5    |

count=3

我不确定您所说的重复数据是什么意思,但我相信您正在寻找一个独特的方法

distinct方法允许您强制查询返回distinct 结果


也许您可以使用laravel上的收集功能按主题id对数据进行分组

$topic = Topic::all();
$topicArray = $topic->groupBy('topic_id')->toArray();
在您的视图中,您只需使用$topicArray来显示数据并计算重复数据

@foreach ($topicArray as $key => $value)
  @foreach ($value as $key2 => $value2)
    | {{ $value2['id'] }} | {{ $value2['topic_id'] }} |<br>
  @endforeach
  count {{ count($value) }}<br><br>
@endforeach
@foreach($topicArray as$key=>$value)
@foreach($key2=>$value2的值)
|{{$value2['id']}}{{$value2['topic_id']}}}}{br>
@endforeach
计数{count($value)}}

@endforeach
您可以利用

在你看来,你可以做到

@foreach ($duplicates as $duplicate)
{{ $duplicate->topic_id }} - {{ $duplicate->total }}
@endforeach

先生如何打印每个
主题id
主题id 4=2
主题id 5=3
。谢谢先生。它也很好用。现在我正在努力理解你的代码。谢谢你的帮助。
$duplicates = Topic::selectRaw("count('id') as total, topic_id")
                   ->groupBy('topic_id')
                   ->get();

// pass the duplicates along with other variables to the view
return view('exams.show', compact('topics','questions', 'duplicates'));
@foreach ($duplicates as $duplicate)
{{ $duplicate->topic_id }} - {{ $duplicate->total }}
@endforeach