Laravel Eloquent 提供了一種優雅的機制來使用富有表現力的 PHP 程式碼執行 SQL 查詢。然而,轉換複雜的多語句 MySQL 查詢可能會令人生畏。本文將引導您將此類查詢轉換為 Eloquent,特別是解決 PREPARE、EXECUTE、SET 和 DEALLOCATE 等語句帶來的挑戰。
要轉換提供的 MySQL 查詢,我們將主要在 Eloquent 中使用原始查詢。細分如下:
DB::table('item_details')->selectRaw('GROUP_CONCAT(...) INTO @sql')->get(); DB::statement('SET @sql = CONCAT(...)'); DB::statement('PREPARE stmt FROM @sql'); DB::statement('EXECUTE stmt'); DB::statement('DEALLOCATE PREPARE stmt');
將這些轉換為 Eloquent 程式碼,我們得到:
$result = DB::table('item_details')->selectRaw('GROUP_CONCAT(...) INTO @sql')->get(); $sql = DB::selectOne('select @sql')->{'@sql'}; $results = ItemDetails::select('item_number', DB::raw('SUM(quantity) as total_quantity'))->selectRaw($sql)->groupBy('item_number')->get();
這種方法採用一系列原始查詢來實現所需的結果。初始查詢將所需的 SQL 連接到使用者變數 @sql 中。隨後,PHP 使用單獨的查詢來檢索該變量,然後建構一個 Eloquent 查詢來執行最終的 SQL 語句,其中包括連接的 SQL。
以上是如何將包含 PREPARE、EXECUTE 和 DEALLOCATE 的複雜 MySQL 語句轉換為 Laravel Eloquent?的詳細內容。更多資訊請關注PHP中文網其他相關文章!