当我在CMD窗口上使用yii migrate/up
时,我生成字段ENUM,结果是错误。
public function up()
{
$tableOptions = null;
if ($this->db->driverName === 'mysql') {
$tableOptions = 'CHARACTER SET utf8 COLLATE utf8_unicode_ci ENGINE=InnoDB';
}
$this->createTable('{{%user_social_media}}', [
'social_media' => $this->ENUM('facebook', 'google', 'twitter', 'github'),
'id' => $this->primaryKey(),
'username' => $this->string(),
'user_id' => $this->integer(11),
'created_at' => $this->integer(11),
'updated_at' => $this->integer(11),
], $tableOptions);
}
2条答案
按热度按时间q5lcpyga1#
目前还没有enum()方法,因为不是每个数据库都支持ENUM字段。您可以手动执行此操作:
注意:此解决方案仅适用于Mysql
有关Postgresql的相关内容,请访问here
ajsxfq5m2#
实际上,最好的方法是使用yii 2 mod团队https://github.com/yii2mod/yii2-enum提供的工具/助手来完成这个任务,并保持迁移的干净。
通过这种方式,您可以在代码上构建枚举功能,工作起来非常有魅力。
即genderType的枚举
使用以下方法访问枚举: