#php #sql #laravel
#php #sql #laravel
Вопрос:
Я хочу сгруппировать все повторяющиеся строки, но я получил ошибку
Вот ошибка ниже
Исключение IlluminateDatabaseQueryException: SQLSTATE[42000]: синтаксическая ошибка или нарушение доступа: 1055 ‘car_web.dependencies.id ‘ не находится в GROUP BY (SQL: select * from
dependencies
wheremake_dep
= 3 group bymodel_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, если вы хотите сгруппировать данные, вам нужна любая агрегатная функция