• Модуль: main
  • Путь к файлу: ~/bitrix/modules/main/lib/db/mssqlsqlhelper.php
  • Класс: BitrixMainDBMssqlSqlHelper
  • Вызов: MssqlSqlHelper::getColumnTypeByField
public function getColumnTypeByField(ScalarField $field)
{
	if ($field instanceof ORMFieldsIntegerField)
	{
		return 'int';
	}
	elseif ($field instanceof ORMFieldsFloatField)
	{
		return 'float';
	}
	elseif ($field instanceof ORMFieldsDatetimeField)
	{
		return 'datetime';
	}
	elseif ($field instanceof ORMFieldsDateField)
	{
		return 'date';
	}
	elseif ($field instanceof ORMFieldsTextField)
	{
		return 'text';
	}
	elseif ($field instanceof ORMFieldsBooleanField)
	{
		$values = $field->getValues();

		if (preg_match('/^[0-9]+$/', $values[0]) && preg_match('/^[0-9]+$/', $values[1]))
		{
			return 'int';
		}
		else
		{
			return 'varchar('.max(mb_strlen($values[0]), mb_strlen($values[1])).')';
		}
	}
	elseif ($field instanceof ORMFieldsEnumField)
	{
		return 'varchar('.max(array_map('strlen', $field->getValues())).')';
	}
	else
	{
		// string by default
		$defaultLength = false;
		foreach ($field->getValidators() as $validator)
		{
			if ($validator instanceof ORMFieldsValidatorsLengthValidator)
			{
				if ($defaultLength === false || $defaultLength > $validator->getMax())
				{
					$defaultLength = $validator->getMax();
				}
			}
		}
		return 'varchar('.($defaultLength > 0? $defaultLength: 255).')';
	}
}