ホームページ >バックエンド開発 >PHPチュートリアル >Laravel WhereIn と GroupBy: 「1055 エラー」を解決するには?

Laravel WhereIn と GroupBy: 「1055 エラー」を解決するには?

Barbara Streisand
Barbara Streisandオリジナル
2024-12-08 03:21:11843ブラウズ

Laravel WhereIn and GroupBy: How to Resolve the

Laravel: WhereIn および GroupBy クエリの '1055 エラー' を理解する

問題:

Laravel で、単一のクエリで WhereIn 句と GroupBy 句の両方を使用すると、次の結果が得られます。エラー:

SQLSTATE[42000]: Syntax error or access violation: 1055 'sbrtpt.loading.id' isn't in GROUP BY

説明:

デフォルトでは、Laravel のデータベース設定は厳密な SQL モードを適用し、WHERE 句で参照されるすべての列も出現する必要があります。クエリに GROUP BY 操作が含まれる場合は、GROUP BY 句。この特定のケースでは、id 列が WhereIn 句には含まれていますが、GroupBy 句には含まれていないため、エラーが発生します。

解決策:

考えられる解決策は 2 つあります。この問題に対処するには:

オプション 1: Strict を無効にするMode

strict モードを無効にするには、config/database.php ファイルに移動し、次のように mysql 配列設定を変更します。

'mysql' => [
    ...
    'strict' => false,
    ...
]

strict を false に設定すると、効果的にすべての厳密モード ルールを無効にします。

オプション 2: 特定のルールを指定します。 Modes

または、問題の原因となっている特定のルールのみを無効にして厳密モードを維持したい場合は、config/database.php の 'my​​sql' 配列内の 'modes' オプションを変更します。たとえば、ONLY_FULL_GROUP_BY モードを無効にするには、次の行を追加します。

'modes' => [
    // Disable this to allow grouping by one column
    'ONLY_FULL_GROUP_BY',
    // Other strict mode options
]

追加情報:

一般的には 2 番目のオプション (特定のオプションを指定する) を使用することをお勧めします。これにより、厳密モードの利点を維持しながら、必要な厳密モード ルールのみを無効にすることができます。特定のデータベース管理システム (MySQL など) のドキュメントを確認することで、このエラーを処理するためにどの追加モードが適切かを判断できます。

以上がLaravel WhereIn と GroupBy: 「1055 エラー」を解決するには?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。