我有一个名为文凭的表格,其结构如下:id,user_id,course_id
我需要为给定的用户找到重复的course_id并将其删除。由于文凭发行逻辑中存在错误,因此现在存在许多重复项。
重复数据示例:
id user_id course_id
432 342 44
433 342 44
434 342 44
我尝试过的:
Diploma::select(DB::raw('count(course_id) As occurrences'))->groupBy('course_id')->having('occurrences', >, 1)->get();
这并没有真正返回我想要的东西,因为我是查询构建器的新手,我不知道该如何实现。
我可以使用方法
take()
然后是方法
destroy()
例如,如果您有3个重复项,则可以使用
take(2)->destroy()
如果您将集合分组。
更多信息:https://laravel.com/docs/master/collections#method-take
尝试用此替换您的查询
Diploma::select(DB::raw('count(`course_id`) as `occurrences`'))
->groupBy('course_id')
->having('occurrences', '>', 1)
->get();
您可以尝试以下方法:
$results = Diploma::whereIn('id', function ( $query ) {
$query->select('id')
->from('diplomas')
->groupBy(['course_id', 'user_id'])
->havingRaw('count(*) > 1');
})->get();
请让我知道:)