Laravel での Insert...Select ステートメントの作成
データベース操作の領域では、Insert...Select ステートメントは二重の処理を実行します。テーブルにデータを挿入しながら、同時に別のテーブルのデータを参照する機能。 Laravel の堅牢な Eloquent ORM とクエリ ビルダーは、そのようなクエリを構築する効率的な方法を提供します。
Laravel を使用したクエリ変換
提供された SQL クエリを Laravel に変換するには、 Laravel の現在のバージョンの制限により、単一の統合されたクエリが必要になります。ただし、クエリを 2 つの部分に分割することで、目的の機能を実現できます。
パート 1: Laravel Select クエリの作成
まず、以下を使用して Laravel Select クエリを作成します。 Eloquent ORM またはクエリ ビルダー。このクエリは、元の SQL クエリの選択部分に似ているはずです。
<code class="php">$select = User::where(...) ->where(...) ->whereIn(...) ->select(['email', 'moneyOwing']);</code>
パート 2: Laravel クエリ ビルダーを使用したデータの挿入
ここで、Laravel のクエリ ビルダーを使用する必要があります。クエリ ビルダーを使用して、クエリの挿入部分を構築します。
<code class="php">$insertQuery = 'INSERT into user_debt_collection (email, dinero) ' . $select->toSql(); \DB::insert($insertQuery, $select->getBindings());</code>
上記のコードでは、$insertQuery を使用して挿入クエリを手動で構築し、DB::insert を利用します。 () は、クエリ文字列とクエリ バインディングの両方を指定してクエリを実行します。
Laravel 5.7 の更新
Laravel 5.7.17 では、 ->insertUsing() メソッド。選択クエリと挿入クエリの機能を 1 つのメソッドに結合します。
<code class="php">DB::table('user_debt_collection')->insertUsing(['email', 'dinero'], $select);</code>
この簡略化されたメソッドにより、Insert... の作成プロセスが合理化されます。 Laravel でステートメントを選択します。
以上がLaravel で Insert...Select ステートメントを効率的に作成するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。