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 は別のクエリを使用してこの変数を取得し、連結された SQL を含む最終 SQL ステートメントを実行する Eloquent クエリを構築します。
以上がPREPARE、EXECUTE、DEALLOCATEを含む複雑なMySQLステートメントをLaravel Eloquentに変換するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。