Как задать имя первичного ключа через миграцию Yii2?

Есть сервер iis
Есть php7.1
Есть sqlsrv extension для mssql

Стандартно миграцию пишу так
$this->createTable('tableName', [
  'id' => $this->primaryKey(10)->unsigned(),
  ...
]

В итоге ключ именуется типа PK__tableName_наборсимволов

Причем набор символов разный.
Далее мне приходится оформлять полнотекстовый индекс, опять же через миграцию, но имя ключа, которое требуется указать, я не могу знать.

Вопрос:
Как с помощью методов миграции задать первичный ключ с автоинкрементом, чтобы он был совместим не только с mssql, но и с mysql к примеру?
Либо как узнать имя уже существующего первичного ключа?
  • Вопрос задан
  • 467 просмотров
Пригласить эксперта
Ответы на вопрос 1
@dalph
проще создавать подобный ключ через
['id' => Schema::TYPE_UPK]

не совсем понятно зачем вам нужно название, ведь обратная миграция будет
dropTable('tableName')

в mysql - название ключа всегда соответствует названию поля:
PRIMARY KEY (`id`)

для получения информации по названию через запрос можно использовать запрос ниже. Но в mysql - он возращает PRIMARY, возможно в mssql будет то, что вам нужно
SELECT CONSTRAINT_NAME FROM INFORMATION_SCHEMA . KEY_COLUMN_USAGE where CONSTRAINT_SCHEMA='db_name' AND TABLE_NAME='table_name' AND CONSTRAINT_NAME="PRIMARY"

для использования запросов используется
$this->db->createCommand($sql = null, $params = [])
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы