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

Bagaimana cara mengimplementasikan INSERT ON DUPLICATE KEY UPDATE alias upsert di CakePHP 3?

Menggunakan jawaban yang diberikan di https://stackoverflow.com/a/24990944/80353 , saya ingin mengulanginya menggunakan contoh kode yang diberikan dalam pertanyaan.

Untuk menjalankan upser pada record berikut

Felicia, 27
Timmy, 71

ke dalam tabel ini

+----+----------+-----+
| id | username | age |
+----+----------+-----+
|  1 | admin    |  33 |
|  2 | Timmy    |  17 |
|  3 | Sally    |  23 |
+----+----------+-----+

cara terbaik adalah menulisnya sebagai

$newUsers = [
    [
        'username' => 'Felicia',
        'age' => 27,
    ],
    [
        'username' => 'Timmy',
        'age' => 71,
    ],
];

$columns = array_keys($newUsers[0]);

$upsertQuery = $this->Users->query();

$upsertQuery->insert($columns);

// need to run clause('values') AFTER insert()
$upsertQuery->clause('values')->values($newUsers);

$upsertQuery->epilog('ON DUPLICATE KEY UPDATE `username`=VALUES(`username`), `age`=VALUES(`age`)')
                ->execute();

Periksa ini untuk detail tentang epilog

Lihat ini untuk mengetahui detail tentang cara menulis insert multiple record dalam satu query




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. KELOMPOK DENGAN MEMILIKI ( BERBEDA ) :PHP , MYSQL

  2. MySQL - paksa untuk tidak menggunakan cache untuk menguji kecepatan kueri

  3. Apakah BIGINT(8) bilangan bulat terbesar yang dapat disimpan MySQL?

  4. Tampilkan semua data tabel MySQL dalam tabel html

  5. Restrukturisasi database yang buruk dengan loop PHP atau MySQL