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 중국어 웹사이트의 기타 관련 기사를 참조하세요!