ホームページ  >  記事  >  データベース  >  Laravel で Insert...Select ステートメントを効率的に作成するにはどうすればよいですか?

Laravel で Insert...Select ステートメントを効率的に作成するにはどうすればよいですか?

Mary-Kate Olsen
Mary-Kate Olsenオリジナル
2024-11-02 06:43:02769ブラウズ

How can I create Insert...Select statements in Laravel efficiently?

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 サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。