2014-01-31 4 views
3

Я использую миграции в Yii для создания нового столбца. Мой код отлично работает, но я не уверен, как установить первичный ключ?Создайте столбец с первичным ключом, используя миграции

Это часть моего миграции файла:

public function up() 
{ 
    $this->addColumn(
     'competition_prizes', 
     'prize_id', 
     'INT(11) UNSIGNED NOT NULL FIRST', 
    ); 

    $this->addPrimaryKey('PK1', 'competition_prizes', 'prize_id'); 
} 

Я не знаю, как сделать competition_prizes столбец первичного ключа.

+0

почему это было downvoted дней после ответа был принят? – Zabs

ответ

1

Это сейчас работает - сделал следующее:

$this->addColumn(
    'competition_prizes', 
    'prize_id', 
    'INT(11) UNSIGNED NOT NULL AUTO_INCREMENT primary key FIRST' 
); 
4

После вашей addColumn функции добавьте эту строку

$this->addPrimaryKey('PK1', 'competition_prizes', 'prize_id') 

Убедитесь, что нет столбца первичного ключа в таблице.

+0

ничего себе ... ты действительно хорош в Yii! Правильный YiiGuru :) – Zabs

+1

thx .. действительно симпатичный вопрос. –

+0

Я получаю сообщение об ошибке - я делаю что-то неправильно - я изменил свое первоначальное сообщение выше. Ошибка: -unexpected ')' в строке 11 - это строка с битом addPrimaryKey – Zabs

0

вы также можете сделать это

$this->addColumn('competition_prizes', 'prize_id', 'pk'); 

'pk' переведёт в 'int (11) NOT NULL AUTO_INCREMENT PRIMARY KEY' Yii2 QueryBuilder Column Type

0

Использовать конструктор. В начале файла добавьте

use yii\db\Schema; 

А потом добавить:

$this->addColumn(
    'competition_prizes'=> Schema::TYPE_PK, 
    'prize_id'=> Schema::TYPE:INTEGER, 
); 
Смежные вопросы