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 Strict モードを無効にする

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

DB_STRICT_MODE=false
ログイン後にコピー

または、config/database.php ファイルで strict モードを構成できます:

<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 中国語 Web サイトの他の関連記事を参照してください。

ソース:php
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!