MySQL Strict 모드로 인해 Laravel Eloquent에서 \'SELECT 목록의 표현식 #1이 GROUP BY 절에 없습니다\' 오류를 수정하는 방법은 무엇입니까?

Linda Hamilton
풀어 주다: 2024-10-18 12:29:03
원래의
551명이 탐색했습니다.

How to Fix

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 파일에서 엄격 모드를 구성할 수도 있습니다:

<code class="php">'mysql' => [
    // Disable strict mode
    'strict' => false,
],</code>
로그인 후 복사

설명

MySQL 5.7 이상에서 sql_mode=only_full_group_by 모드에서는 SELECT 목록의 모든 열이 GROUP BY 절에 포함되거나 집계 함수여야 합니다. 제공된 쿼리에서:

<code class="php">$products = Product::where('status', 1)
            ->where('stock', '>', 0)
            ->where('category_id', '=', $category_id)
            ->groupBy('store_id')
            ->orderBy('updated_at', 'desc')
            ->take(4)
            ->get();</code>
로그인 후 복사

열 ID(기본 키)가 SELECT 목록에 나타나지만 GROUP BY 절에는 포함되지 않습니다. 엄격 모드를 비활성화하면 MySQL은 GROUP BY 열에 기능적으로 종속되지 않는 SELECT 목록의 집계되지 않은 열을 허용합니다.

위 내용은 MySQL Strict 모드로 인해 Laravel Eloquent에서 \'SELECT 목록의 표현식 #1이 GROUP BY 절에 없습니다\' 오류를 수정하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿
회사 소개 부인 성명 Sitemap
PHP 중국어 웹사이트:공공복지 온라인 PHP 교육,PHP 학습자의 빠른 성장을 도와주세요!