Laravelで「挿入...選択」を使用してデータを効率的に挿入する方法?

Barbara Streisand
リリース: 2024-10-28 12:55:02
オリジナル
476 人が閲覧しました

How to Efficiently Insert Data Using `Insert... Select` in Laravel?

Laravel での挿入...選択を使用した効率的なデータの挿入

Laravel のクエリ変換

提供された SQL クエリを Laravel 式に変換するには、Laravel 5.6 以前のバージョンでは挿入...選択操作が直接サポートされていないことを理解することが重要です。これは、直接変換が不可能であることを意味します。

Laravel の代替アプローチ

ただし、望ましい結果を達成できる回避策があります。単一のクエリを試行する代わりに、クエリを 2 つのステップに分割できます。

  1. Laravel の QueryBuilder を利用して、必要なデータを取得する Select クエリを構築します。 getBindings() メソッドを使用してバインディング パラメータを抽出します。
  2. 生の SQL クエリを使用して、ステップ 1 で取得したデータを使用して挿入を実行します。 getBindings() から取得したバインディング パラメータをバインドします。

コード例:

<code class="php">// Step 1: Generate the Select query
$select = User::where(...)
                  ->where(...)
                  ->whereIn(...)
                  ->select(array('email','moneyOwing'));

// Step 2: Get binding parameters
$bindings = $select->getBindings();

// Step 3: Construct raw SQL insert query
$insertQuery = 'INSERT into user_debt_collection (email,dinero) '
                . $select->toSql();

// Step 4: Execute the insert
\DB::insert($insertQuery, $bindings);</code>
ログイン後にコピー

Laravel 5.7 アップデート

Laravel 5.7 では、->insertUsing() メソッドが導入されました。挿入...選択の直接サポート。前の例は次のように簡略化されます:

<code class="php">DB::table('user_debt_collection')->insertUsing(['email','dinero'], $select);</code>
ログイン後にコピー

以上がLaravelで「挿入...選択」を使用してデータを効率的に挿入する方法?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!