使用 Magento 标准方式编写一个 Mysql insertMultiple()查询,以一次插入多行/记录。
您可以编写直接 SQL 查询insertMultiple(),而不必担心使用下面的代码片段在特定表中插入多条记录的模型操作。
返回类型:insertMultiple()总是为表中受影响的行返回一个整数。
基本功能定义:
/**
* Inserts a table multiply rows with specified data.
*
* @param mixed $table The table to insert data into.
* @param array $data Column-value pairs or array of Column-value pairs.
* @return int The number of affected rows.
*/
public function insertMultiple($table, array $data);
让我们从sales_order_status表中编写一个查询来完成insertMultiple()查询操作。
sales_order_status仅包含两个字段,状态和标签。
<?php
namespace Path\To\Class;
use Magento\Framework\App\ResourceConnection;
class insertMultiple {
const ORDER_TABLE = 'sales_order_status';
/**
* @var ResourceConnection
*/
private $resourceConnection;
public function __construct(
ResourceConnection $resourceConnection
) {
$this->resourceConnection = $resourceConnection;
}
/**
* insert multiple records Sql Query
*
* @return int
*/
public function insertMultipleQuery()
{
$connection = $this->resourceConnection->getConnection();
$tableName = $connection->getTableName(self::ORDER_TABLE);
$data = [
['status'=>'statusName1','label'=>'StatusLabel1'],
['status'=>'statusName2','label'=>'StatusLabel2']
];
$countData = $connection->insertMultiple($tableName, $data);
return $countData;
}
}
Output:
2
You can see new records are added to the sales_order_status table.