Синтаксическая ошибка или нарушение прав доступа: 1140 Смешивание столбцов GROUP laravel

Я написал этот запрос с нумерацией страниц

$items = Item::select('items.*', 'sub_category_name', 'category_name', 'sub_category_slug', 'category_slug')
->join('sub_categories AS sc', 'sc.sc_id', 'items.sub_category_id')
->join('categories AS c', 'c.category_id', 'sc.category_id')
->where('items.is_active', '=', 1)
->where('sc.is_active', '=', 1)
->where('c.is_active', '=', 1)
->where('sc.sc_id', '=', $sub_category_id)
->paginate(1);

Но это говорит

Синтаксическая ошибка или нарушение доступа: 1140 Смешивание столбцов GROUP (MIN (), MAX (), COUNT (), …) без столбцов GROUP недопустимо, если отсутствует предложение GROUP BY

Но когда я добавляю ->groupBy('item_id'); это говорит

Синтаксическая ошибка или нарушение прав доступа: 1055 ‘books.items.item_name’ отсутствует в GROUP BY

Но когда я делаю item_name в предложении groupBy, он говорит groupBy следующий столбец. Зачем?

1

Решение

Когда вы используете агрегатные функции, такие как MIN(),MAX(),COUNT() AVG() ты должен использовать Group BY

Но в последнем MYSQL Вы также должны использовать все столбцы в списке как группу.

В вашем config/database.php выключи строгий режим.

'mysql' => [
'driver' => 'mysql',
'host' => env('DB_HOST', 'localhost'),
'port' => env('DB_PORT', '3306'),
'database' => env('DB_DATABASE', 'forge'),
'username' => env('DB_USERNAME', 'forge'),
'password' => env('DB_PASSWORD', ''),
'charset' => 'utf8',
'collation' => 'utf8_unicode_ci',
'prefix' => '',
'strict' => false,
'engine' => null,
],

'strict' => false после этого вы можете использовать группирование по одному столбцу.

4

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]