- Модуль: sale
- Путь к файлу: ~/bitrix/modules/sale/lib/discount/gift/relateddata.php
- Класс: BitrixSaleDiscountGiftRelatedDataTable
- Вызов: RelatedDataTable::insertBatch
static function insertBatch(array $items)
{
$tableName = static::getTableName();
$connection = Application::getConnection();
$sqlHelper = $connection->getSqlHelper();
$query = $prefix = '';
if($connection instanceof MysqlCommonConnection)
{
foreach ($items as $item)
{
list($prefix, $values) = $sqlHelper->prepareInsert($tableName, $item);
$query .= ($query? ', ' : ' ') . '(' . $values . ')';
if(mb_strlen($query) > self::MAX_LENGTH_BATCH_MYSQL_QUERY)
{
$connection->queryExecute("INSERT INTO {$tableName} ({$prefix}) VALUES {$query}");
$query = '';
}
}
unset($item);
if($query && $prefix)
{
$connection->queryExecute("INSERT INTO {$tableName} ({$prefix}) VALUES {$query}");
}
}
elseif($connection instanceof MssqlConnection)
{
$valueData = array();
foreach ($items as $item)
{
list($prefix, $values) = $sqlHelper->prepareInsert($tableName, $item);
$valueData[] = "SELECT {$values}";
}
unset($item);
$valuesSql = implode(' UNION ALL ', $valueData);
if($valuesSql && $prefix)
{
$connection->queryExecute("INSERT INTO {$tableName} ({$prefix}) $valuesSql");
}
}
elseif($connection instanceof OracleConnection)
{
$valueData = array();
foreach ($items as $item)
{
list($prefix, $values) = $sqlHelper->prepareInsert($tableName, $item);
$valueData[] = "SELECT {$values} FROM dual";
}
unset($item);
$valuesSql = implode(' UNION ALL ', $valueData);
if($valuesSql && $prefix)
{
$connection->queryExecute("INSERT INTO {$tableName} ({$prefix}) $valuesSql");
}
}
}