Laravel查询生成器查找重复数据

问题描述 投票:0回答:3

我有一个名为文凭的表格,其结构如下: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();

这并没有真正返回我想要的东西,因为我是查询构建器的新手,我不知道该如何实现。

laravel duplicates
3个回答
0
投票

我可以使用方法

take() 

然后是方法

destroy()

例如,如果您有3个重复项,则可以使用

take(2)->destroy()

如果您将集合分组。

更多信息:https://laravel.com/docs/master/collections#method-take


0
投票

尝试用此替换您的查询

Diploma::select(DB::raw('count(`course_id`) as `occurrences`'))
->groupBy('course_id')
->having('occurrences', '>', 1)
->get();

0
投票

您可以尝试以下方法:

$results = Diploma::whereIn('id', function ( $query ) {
        $query->select('id')
            ->from('diplomas')
            ->groupBy(['course_id', 'user_id'])
            ->havingRaw('count(*) > 1');
    })->get();

请让我知道:)

© www.soinside.com 2019 - 2024. All rights reserved.