Use of insertOnDuplicate query using Magento 2, You need to create a Connection object first to run the query using ResourceConnection class.
When you insert any new row into a table if the row causes a duplicate in Primary key or UNIQUE index, throw an error in MySQL.
Base Definition of function:
/** * Inserts a table row with specified data. * * @param mixed $table The table to insert data into. * @param array $data Column-value pairs or array of column-value pairs. * @param array $fields update fields pairs or values * @return int The number of affected rows. */ public function insertOnDuplicate($table, array $data, array $fields = []);
Example,
<?php class Magento2Sql { public function __construct( \Magento\Framework\App\ResourceConnection $resource ) { $this->resource = $resource; } public function executeInsertOnDuplicate() { $tableName = "Your_Tablename"; $data = ["column_name1"=>"value1","column_name2"=>"value2"]; // Key_Value Pair $connection = $this->resource->getConnection(); $connection->insertOnDuplicate($tableName, $data); } }
The first argument is tableName
The second argument is the key-value pair of an array.
The third argument is optional for the table’s field of array. (update fields pairs)
Check for other Direct SQL Query in Magento 2