phinx icon indicating copy to clipboard operation
phinx copied to clipboard

insertOrUpdate, insertOrSkip table methods

Open yurii-zadryhun opened this issue 1 year ago • 0 comments

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 3. forceInsert( $insertion ): Inserts a record after deleting it if it already exists. https://dev.mysql.com/doc/refman/8.0/en/replace.html

yurii-zadryhun avatar Jun 29 '23 12:06 yurii-zadryhun