Laravel Eloquent의 sql_mode=only_full_group_by와 호환되지 않음
"SELECT 목록의 표현식 #1이 GROUP BY 절에 없습니다.. ." 그룹화를 사용하여 Eloquent 쿼리를 실행할 때 MySQL과의 비호환성을 암시합니다. sql_mode=only_full_group_by. 이 문제를 해결하려면:
MySQL 엄격 모드 비활성화
한 가지 해결 방법은 데이터베이스 연결 구성에서 MySQL 엄격 모드 설정을 비활성화하는 것입니다. Laravel의 .env 파일에 다음 줄을 추가하세요:
DB_STRICT_MODE=false
또는 config/database.php 파일에서 엄격 모드를 구성할 수도 있습니다:
'mysql' => [
// Disable strict mode
'strict' => false,
],
설명
MySQL 5.7 이상에서 sql_mode=only_full_group_by 모드에서는 SELECT 목록의 모든 열이 GROUP BY 절에 포함되거나 집계된 함수. 제공된 쿼리에서:
$products = Product::where('status', 1)
->where('stock', '>', 0)
->where('category_id', '=', $category_id)
->groupBy('store_id')
->orderBy('updated_at', 'desc')
->take(4)
->get();
열 ID(기본 키)가 SELECT 목록에 나타나지만 GROUP BY 절에는 포함되지 않습니다. 엄격 모드를 비활성화하면 MySQL은 GROUP BY 열에 기능적으로 종속되지 않는 SELECT 목록의 집계되지 않은 열을 허용합니다.
부인 성명: 제공된 모든 리소스는 부분적으로 인터넷에서 가져온 것입니다. 귀하의 저작권이나 기타 권리 및 이익이 침해된 경우 자세한 이유를 설명하고 저작권 또는 권리 및 이익에 대한 증거를 제공한 후 이메일([email protected])로 보내주십시오. 최대한 빨리 처리해 드리겠습니다.
Copyright© 2022 湘ICP备2022001581号-3