php 在Yii迁移中指定字符串的长度

kmb7vmvb  于 2023-04-19  发布在  PHP
关注(0)|答案(2)|浏览(95)

我希望创建一个迁移,其up方法将执行create_table函数。
例如:

class m101129_185401_create_news_table extends CDbMigration
{
    public function up()
    {
        $this->createTable('tbl_news', array(
            'id' => 'pk',
            'title' => 'string NOT NULL',
            'content' => 'text',
        ));
    }

    public function down()
    {
        $this->dropTable('tbl_news');
    }
}

在迁移中我如何指定字段的长度?例如,如果我必须指定标题字段的长度应为100,我会写什么?

wgxvkvu9

wgxvkvu91#

嘿!我想这是他们去年加的。我还没试过,但这不管用吗?

public function up()
{
    $this->createTable('tbl_news', array(
        'id' => 'pk',
        'title' => 'varchar(20) NOT NULL',
        'content' => 'text',
    ));
}

另外,在this站点中,您会发现一些有用的信息,以及here。祝您好运!

vwkv1x7d

vwkv1x7d2#

使用带长度参数的SchemaBuilderTrait::string()

自从最初的答案发布以来已经过去了10年,创建这种迁移的可用方法已经有所改进。
当前以跨DB兼容的方式执行OP要求的操作的方法是:

public function safeUp()
{
    $this->createTable(
        'tbl_news',
        [
            'id' => $this->primaryKey(),
            'title' => $this->string(100)->notNull(),
            'content' => $this->text(),
        ]
    );
}

相关问题