sql >> Database teknologi >  >> RDS >> Mysql

Hvordan implementerer man INSERT ON DUPLICATE KEY UPDATE aka upsert i CakePHP 3?

Brug af svaret på https://stackoverflow.com/a/24990944/80353 , Jeg vil gerne omformulere dette ved at bruge kodeeksemplet i spørgsmålet.

At køre upsert på følgende poster

Felicia, 27
Timmy, 71
 

ind i denne tabel

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

den bedste måde er at skrive det som

$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();
 

Tjek dette ud for detaljer om epilog

Tjek dette ud for detaljer om, hvordan man skriver indsæt flere poster i en enkelt forespørgsel




  1. postgreSQL - i vs enhver

  2. Sådan skjules mysql-lagrede procedure

  3. C# Dekryptere bytes fra SQL Server EncryptByPassPhrase?

  4. Tjek, om brugernavnet allerede findes i databasen MySQL PHP