Mysql
 sql >> Teknologi Basis Data >  >> RDS >> Mysql

Buat Insert... Pilih pernyataan di Laravel

Tidak ada cara untuk melakukan ini dalam satu kueri (kecuali jika Anda menggunakan Laravel 5.7), namun saya menemukan masalah yang sama dan ingin memastikan bahwa saya dapat terus menggunakan pilihan tertentu yang saya buat dengan QueryBuilder.

Jadi apa yang dapat Anda lakukan, untuk menjaga hal-hal setengah dari apa yang bersih dan untuk menggunakan kembali fungsionalitas yang telah membangun pernyataan pilih sebelumnya, adalah ini:

/**
 * Wherever your Select may come from
 **/
$select = User::where(...)
                  ->where(...)
                  ->whereIn(...)
                  ->select(array('email','moneyOwing'));
/**
 * get the binding parameters
 **/ 
$bindings = $select->getBindings();
/**
 * now go down to the "Network Layer"
 * and do a hard coded select
 */
 $insertQuery = 'INSERT into user_debt_collection (email,dinero) '
                . $select->toSql();
    
 \DB::insert($insertQuery, $bindings);

PERBARUI Laravel 5.7

Pada Laravel 5.7.17 Anda dapat menggunakan ->insertUsing(). Lihat di sini untuk rincian. Terima kasih @Soulriser telah menunjukkan hal ini.

Jadi kueri di atas akan terlihat seperti ini:

DB::table('user_debt_collection')->insertUsing(['email','dinero'], $select);


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Bagaimana saya bisa melakukan 'masukkan jika tidak ada' di MySQL?

  2. Fungsi Konversi MySQL

  3. Server mysqld lain berjalan pada kesalahan port 3306

  4. MySQL PILIH LAST_INSERT_ID() untuk kunci majemuk. Apa itu mungkin?

  5. MySQL BLOB vs File untuk Menyimpan Gambar PNG Kecil?