首頁 > 資料庫 > mysql教程 > 如何修復 Laravel Eloquent 的「SELECT 清單的表達式 #1 不在 GROUP BY 中」MySQL 錯誤?

如何修復 Laravel Eloquent 的「SELECT 清單的表達式 #1 不在 GROUP BY 中」MySQL 錯誤?

Mary-Kate Olsen
發布: 2024-11-19 11:27:02
原創
1015 人瀏覽過

How to Fix Laravel Eloquent's

解決Laravel Eloquent 中MySQL 的「Expression #1 of SELECT List Not in GROUP BY」錯誤

Lara Eloquent」錯誤

Lara Eloquent>錯誤使用時出現「SELECT List 的表達式#1 不在GROUP BY 子句中”錯誤groupBy() 方法。當非聚合列包含在 SELECT 清單中,而對其他資料列執行聚合時,通常會發生這種情況。
$products = Product::where('status', 1)
            ->where('stock', '>', 0)
            ->where('category_id', '=', $category_id)
            ->groupBy('store_id')
            ->orderBy('updated_at', 'desc')
            ->take(4)
            ->get();
登入後複製

考慮以下Laravel Eloquent 查詢:

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 的嚴格模式設定。此模式強制執行更嚴格的 SQL 語法和列分組,這可能與正在執行的查詢發生衝突。
'connections' => [
    'mysql' => [
        // Behave like MySQL 5.6
        'strict' => false,

        // Behave like MySQL 5.7
        'strict' => true,
    ]
]
登入後複製

修改 config/database.php 檔案中的資料庫設定:

設定嚴格選項設定為 false 以停用 MySQL 連線中的嚴格模式。這應該可以解決「SELECT List 的表達式 #1 不在 GROUP BY 中」錯誤。 有關更高級的配置設置,請參閱 Matt Stauffer 的部落格文章。

以上是如何修復 Laravel Eloquent 的「SELECT 清單的表達式 #1 不在 GROUP BY 中」MySQL 錯誤?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板