ホームページ >バックエンド開発 >PHPチュートリアル >複雑な MySQL の複数ステートメントのクエリを Laravel Eloquent に変換するにはどうすればよいですか?
MySQL 複数ステートメント クエリを Laravel Eloquent に変換する
MySQL クエリでは、次のようなさまざまな操作を含む複雑な複数ステートメント クエリが発生することがあります。設定、準備、実行、割り当て解除。このようなクエリを Laravel Eloquent に変換するのは困難な場合があります。
解決策
Laravel Eloquent は複数のステートメントを実行したり、DEALLOCATE などの低レベルの操作を実行したりすることはできません。したがって、クエリを個々のコンポーネントに分割し、個別に実行する必要があります。
まず、GROUP_CONCAT クエリを実行します。
<code class="php">$concatResult = DB::table('item_details') ->selectRaw('GROUP_CONCAT(...) INTO @sql') ->get();</code>
@sql 変数に割り当てられた値を取得します。
<code class="php">$sql = DB::selectOne('select @sql')->{'@sql'};</code>
最後に、Eloquent で残りのクエリを作成して実行します。
<code class="php">ItemDetails::select('item_number', DB::raw('SUM(quantity) as total_quantity')) ->selectRaw($sql) ->groupBy('item_number') ->get();</code>
このソリューションは、MySQL の複数ステートメントのクエリを、Laravel Eloquent で個別に実行できる管理可能なチャンクに分割します。元のクエリと同じ結果が得られます。
以上が複雑な MySQL の複数ステートメントのクエリを Laravel Eloquent に変換するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。