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列成为主键。

4

5 回答 5

4

在你的addColumn函数之后添加这一行

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

确保表中没有主键列。

于 2014-01-31T16:25:31.587 回答
2

现在正在运行 - 执行了以下操作:

$this->addColumn(
    'competition_prizes',
    'prize_id',
    'INT(11) UNSIGNED NOT NULL AUTO_INCREMENT primary key FIRST'
);
于 2014-02-03T16:31:54.080 回答
1

对于 Yii2 版本 2.0.6 - 看看http://www.yiiframework.com/doc-2.0/yii-db-schemabuildertrait.html#primaryKey%28%29-detail

$this->createTable('sometable', [
    'sometable_id' => $this->primaryKey(), // does not depend on Your DBMS
    'sometable_number' => 'SMALLINT(6) UNSIGNED NULL DEFAULT NULL'// will be depend on your DBMS.
]);
于 2015-09-07T11:16:35.693 回答
0

你也可以这样做

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

'pk' 将转换为 'int(11) NOT NULL AUTO_INCREMENT PRIMARY KEY' Yii2 QueryBuilder 列类型

于 2017-02-09T18:17:12.660 回答
0

使用构造函数。在文件开头添加

use yii\db\Schema; 

然后添加:

$this->addColumn(
    'competition_prizes'=> Schema::TYPE_PK,
    'prize_id'=> Schema::TYPE:INTEGER,
);
于 2017-02-10T19:01:06.933 回答