Rumah  >  Artikel  >  pangkalan data  >  Bagaimana untuk Memasukkan Data dengan Cekap Menggunakan `Insert... Select` dalam Laravel?

Bagaimana untuk Memasukkan Data dengan Cekap Menggunakan `Insert... Select` dalam Laravel?

Barbara Streisand
Barbara Streisandasal
2024-10-28 12:55:02477semak imbas

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

Penyisipan Data yang Cekap Menggunakan Sisipan... Pilih dalam Laravel

Penukaran Pertanyaan untuk Laravel

Untuk menukar pertanyaan SQL yang disediakan kepada ungkapan Laravel, adalah penting untuk memahami bahawa Laravel 5.6 dan versi terdahulu tidak mempunyai sokongan langsung untuk operasi Insert... Select. Ini bermakna penukaran langsung tidak boleh dilakukan.

Pendekatan Alternatif dalam Laravel

Walau bagaimanapun, terdapat penyelesaian yang membolehkan anda mencapai hasil yang diingini. Daripada mencuba satu pertanyaan, anda boleh membahagikannya kepada dua langkah:

  1. Gunakan QueryBuilder Laravel untuk membina pertanyaan Pilih yang mendapatkan semula data yang diperlukan. Gunakan kaedah getBindings() untuk mengekstrak parameter pengikatan.
  2. Gunakan pertanyaan SQL mentah untuk melaksanakan sisipan menggunakan data yang diperoleh dalam Langkah 1. Ikat parameter pengikatan yang diperoleh daripada getBindings().

Kod Contoh:

<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>

Kemas Kini Laravel 5.7

Laravel 5.7 memperkenalkan kaedah ->insertUsing(), menyediakan sokongan langsung untuk Sisipkan... Pilih. Contoh sebelumnya akan dipermudahkan kepada:

<code class="php">DB::table('user_debt_collection')->insertUsing(['email','dinero'], $select);</code>

Atas ialah kandungan terperinci Bagaimana untuk Memasukkan Data dengan Cekap Menggunakan `Insert... Select` dalam Laravel?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn