Я написал этот запрос с нумерацией страниц
$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 следующий столбец. Зачем?
Когда вы используете агрегатные функции, такие как 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
после этого вы можете использовать группирование по одному столбцу.
Других решений пока нет …