「労働者が自分の仕事をうまくやりたいなら、まず自分の道具を研ぎ澄まさなければなりません。」 - 孔子、「論語。陸霊公」
表紙 > プログラミング > MySQL Strict モードによる Laravel Eloquent の「SELECT リストの式 #1 が GROUP BY 句にありません」エラーを修正する方法

MySQL Strict モードによる Laravel Eloquent の「SELECT リストの式 #1 が GROUP BY 句にありません」エラーを修正する方法

2024 年 11 月 8 日に公開
ブラウズ:366

How to Fix \

Laravel Eloquent の sql_mode=only_full_group_by との非互換性

「SELECT リストの式 #1 が GROUP BY 句にありません。」というエラーが発生しました。 ." グループ化を使用して Eloquent クエリを実行すると、MySQL との非互換性が示唆されます。 sql_mode=only_full_group_by。これを解決するには:

MySQL Strict モードを無効にする

解決策の 1 つは、データベース接続構成で MySQL Strict モード設定を無効にすることです。 Laravel の .env ファイルに次の行を追加します:

DB_STRICT_MODE=false

あるいは、config/database.php ファイルで strict モードを設定できます:

'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 リストに許可します。

リリースステートメント この記事は次の場所に転載されています: 1729224679 侵害がある場合は、[email protected] に連絡して削除してください。
最新のチュートリアル もっと>

免責事項: 提供されるすべてのリソースの一部はインターネットからのものです。お客様の著作権またはその他の権利および利益の侵害がある場合は、詳細な理由を説明し、著作権または権利および利益の証拠を提出して、電子メール [email protected] に送信してください。 できるだけ早く対応させていただきます。

Copyright© 2022 湘ICP备2022001581号-3