Я ищу наиболее подходящий метод для получения списка дубликатов в моей базе данных с помощью laravel и eloquent.
Пример записей таблицы:
id : 1
artist_name : Jane Doe
track_name : The doe song
id : 2
artist_name : John Doe
track_name : A love song
id : 3
artist_name : Jane Doe
track_name : The doe song
id : 4
artist_name : John Doe
track_name : Happy
id : 5
artist_name : John Doe
track_name : Happy
Ожидаемый результат (aсписок всех дубликатов):
id : 1
artist_name : Jane Doe
track_name : The doe song
id : 3
artist_name : Jane Doe
track_name : The doe song
id : 4
artist_name : John Doe
track_name : Happy
id : 5
artist_name : John Doe
track_name : Happy
Я попробовал следующий фрагмент кода, но получаю сообщение об ошибке:
$tracks = Track::whereIn('id', function ( $query ) {
$query->select('id')->from('tracks')->groupBy('track_name')->havingRaw('count(*) > 1');
})->paginate(20);
SQLSTATE [42000]: ошибка синтаксиса илинарушение прав доступа: 1055 Выражение № 1 списка SELECT отсутствует в предложении GROUP BY и содержит неагрегированный столбец table.tracks.id, который функционально не зависит от столбцов в предложении GROUP BY;это несовместимо с sql_mode = only_full_group_by (SQL: выберите количество () как агрегат из tracks
, где id
in (выберите id
из tracks
группы, track_name
, имеющей количество ()>1))