Синтаксическая ошибка или нарушение прав доступа: 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 после этого вы можете использовать группирование по одному столбцу.

Вы можете прокомментировать строку ONLY_FULL_GROUP_BY в массиве режимов

Другие вопросы по тегам