與Laravel Eloquent 中的sql_mode=only_full_group_by 不相容
停用 MySQL 嚴格模式
解決方案是在資料庫連線配置中停用 MySQL 嚴格模式設定。在Laravel 的.env 檔案中,加入以下行:DB_STRICT_MODE=false或者,您可以在config/database.php 檔案中設定嚴格模式:
<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 將允許 SELECT 清單中存在功能上不依賴 GROUP BY 列的非聚合列。
以上是如何修復由於 MySQL 嚴格模式導致 Laravel Eloquent 中的「SELECT 清單的表達式 #1 不在 GROUP BY 子句中」錯誤?的詳細內容。更多資訊請關注PHP中文網其他相關文章!