複雑な複数ステートメントの MySQL クエリを Laravel Eloquent に変換する
このクエリには、GROUP_CONCAT、SET、PREPARE、 EXECUTE と DEALLOCATE は、Laravel Eloquent に変換するのが大変な場合があります。段階的に見ていきましょう。
まず、Laravel は PREPARE や EXECUTE のような準備されたステートメントをサポートしていません。ただし、生のクエリを使用して、これらの各ステートメントを個別に実行できます。
<code class="php">DB::table('item_details')->selectRaw('GROUP_CONCAT(...) INTO @sql')->get(); DB::statement('SET @sql = CONCAT(...)'); DB::statement('DEALLOCATE PREPARE stmt');</code>
次に、SET ステートメントの結果を取得する必要があります。これはスカラー値であるため、selectOne() を使用して取得できます。
<code class="php">$sql = DB::selectOne('select @sql')->{'@sql'};</code>
最後に、取得した SQL 文字列を Eloquent クエリで使用できます。
<code class="php">ItemDetails::select('item_number', DB::raw('SUM(quantity) as total_quantity')) ->selectRaw($sql) ->groupBy('item_number') ->get();</code>
このコード生のクエリを使用して複数ステートメントの MySQL クエリを実行し、期待される結果を取得します。
以上が複雑な複数ステートメントの MySQL クエリを Laravel Eloquent に変換するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。