cakephp / phinx

PHP Database Migrations for Everyone
https://phinx.org
MIT License
4.46k stars 892 forks source link

insertOrUpdate, insertOrSkip table methods #2205

Open yurii-zadryhun opened 1 year ago

yurii-zadryhun commented 1 year ago

These methods would be so useful.

  1. insertOrUpdate( $insertion, $update ): Inserts a record with the $insertion values or, if it exists, updates the record with the $update values. Please have a look at Laravel's Eloquent implementation of the updateOrInsert method. I bet it does something like this INSERT INTO {$this->table_name} ( user_id, points ) VALUES( %d, %d ) ON DUPLICATE KEY UPDATE points = points + %d

  2. insertOrSkip( $insertion ): Inserts a record with the $insertion values only if the item doesn't exist. Simple insert() throws the MySQL error (duplicate entry). The implementation is simple: INSERT IGNORE INTO instead of INSERT INTO

Maybe you would also add this method

  1. forceInsert( $insertion ): Inserts a record after deleting it if it already exists. https://dev.mysql.com/doc/refman/8.0/en/replace.html