使用 Magento 2 使用insertOnDuplicate查询,您需要先创建一个 Connection 对象才能使用 ResourceConnection 类运行查询。
当您将任何新行插入表中时,如果该行导致主键或唯一索引中的重复,则在 MySQL 中引发错误。
基本功能定义:
/**
* 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);
}
}
第一个参数是 tableName
第二个参数是数组的键值对。
第三个参数对于表的数组字段是可选的。(更新字段对)