ホームページ  >  記事  >  データベース  >  Laravel Eloquent の「SELECT リストの式 #1 が GROUP BY にありません」という MySQL エラーを修正する方法

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

Mary-Kate Olsen
Mary-Kate Olsenオリジナル
2024-11-19 11:27:02933ブラウズ

How to Fix Laravel Eloquent's

Laravel Eloquent での MySQL の「SELECT リストの式 #1 が GROUP BY にありません」エラーを解決する

Laravel Eloquent で一般的なエラーが発生しました「SELECT リストの式 #1 が GROUP BY 句にありません」エラーは次の場合に発生します。 groupBy() メソッドを使用します。これは通常、他の列で集計が実行されているときに、非集計列が SELECT リストに含まれている場合に発生します。

次の Laravel Eloquent クエリを考えてみましょう:

$products = Product::where('status', 1)
            ->where('stock', '>', 0)
            ->where('category_id', '=', $category_id)
            ->groupBy('store_id')
            ->orderBy('updated_at', 'desc')
            ->take(4)
            ->get();

このクエリを実行すると、次のような可能性があります。次のエラーが発生します:

SQLSTATE[42000]: Syntax error or access violation: 1055 Expression #1
of SELECT list is not in GROUP BY clause and contains nonaggregated
column 'myshop.products.id' which is not functionally dependent on
columns in GROUP BY clause; this is incompatible with
sql_mode=only_full_group_by (SQL: select * from products where
status = 1 and stock > 0 and category_id = 5 group by store_id
order by updated_at desc limit 4)

この問題を解決するには、MySQL の strict を無効にします。データベース接続設定のモード。このモードでは、より厳密な SQL 構文と列グループ化が適用されるため、実行中のクエリと競合する可能性があります。

config/database.php ファイルでデータベース構成を変更します。

'connections' => [
    'mysql' => [
        // Behave like MySQL 5.6
        'strict' => false,

        // Behave like MySQL 5.7
        'strict' => true,
    ]
]

厳密な値を設定します。 MySQL 接続の厳密モードを無効にするには、オプションを false に設定します。これにより、「Expression #1 of SELECT List Not in GROUP BY」エラーが解決されるはずです。

より高度な構成設定については、Matt Stauffer によるブログ投稿を参照してください。

以上がLaravel Eloquent の「SELECT リストの式 #1 が GROUP BY にありません」という MySQL エラーを修正する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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