SQLSTATE[42000]: Синтаксическая ошибка или нарушение доступа: 1055 для groupby в laravel

#php #sql #laravel

#php #sql #laravel

Вопрос:

Я хочу сгруппировать все повторяющиеся строки, но я получил ошибку

Вот ошибка ниже

Исключение IlluminateDatabaseQueryException: SQLSTATE[42000]: синтаксическая ошибка или нарушение доступа: 1055 ‘car_web.dependencies.id ‘ не находится в GROUP BY (SQL: select * from dependencies where make_dep = 3 group by model_dep ) в файле C:xampphtdocscar-parts-webvendorlaravelframeworksrcIlluminateDatabaseConnection.php в строке 671

Я также меняю database.php файл

 'strict' => true,
'modes' => [
    //'ONLY_FULL_GROUP_BY', // Disable this to allow grouping by one column
    'STRICT_TRANS_TABLES',
    'NO_ZERO_IN_DATE',
    'NO_ZERO_DATE',
    'ERROR_FOR_DIVISION_BY_ZERO',
    'NO_AUTO_CREATE_USER',
    'NO_ENGINE_SUBSTITUTION'
],
  

но выдает ту же ошибку

вот ниже мой запрос

 $data = DB::table('dependencies')
        ->where('make_dep', '=', $make)
        ->groupBy('model_dep')
        ->get();
  

Комментарии:

1. Обычно вы ГРУППИРУЕТЕСЬ ПО тем же столбцам, которые вы ВЫБИРАЕТЕ, за исключением тех, которые являются аргументами для функций set.

2. После изменения вы очистили кеши? php artisan config:cache

3. нет, кэш не очищен, позвольте мне очистить

4. попробуйте database.php внутри массива mysql 'strict' => false, сделать его ложным и попробуйте

Ответ №1:

Вы запутались в операторе group by, потому что в group by нам нужно использовать любую агрегатную функцию, такую как sum, count, … . Если вы хотите удалить повторяющиеся строки, вы можете просто использовать метод DISTINCT, если вы хотите сгруппировать данные, вам нужна любая агрегатная функция