- Модуль: main
- Путь к файлу: ~/bitrix/modules/main/lib/db/mysqlidbconnection.php
- Класс: BitrixMainDBMysqliDbConnection
- Вызов: MysqliDbConnection::getIndexName
public function getIndexName($tableName, array $arColumns, $strict = false)
{
if (!is_array($arColumns) || empty($arColumns))
return null;
$tableName = preg_replace("/[^a-z0-9_]+/i", "", $tableName);
$tableName = trim($tableName);
$rs = $this->query("SHOW INDEX FROM `".$this->getSqlHelper()->forSql($tableName)."`");
if (!$rs)
return null;
$arIndexes = array();
while ($ar = $rs->fetch())
$arIndexes[$ar["Key_name"]][$ar["Seq_in_index"] - 1] = $ar["Column_name"];
$strColumns = implode(",", $arColumns);
foreach ($arIndexes as $Key_name => $arKeyColumns)
{
ksort($arKeyColumns);
$strKeyColumns = implode(",", $arKeyColumns);
if ($strict)
{
if ($strKeyColumns === $strColumns)
return $Key_name;
}
else
{
if (substr($strKeyColumns, 0, strlen($strColumns)) === $strColumns)
return $Key_name;
}
}
return null;
}