YII Framework框架使用YIIC快速创建YII应用之migrate用法实例详解
什么是YIIC migrate
YIIC migrate 可以帮助我们快速创建数据库表,其本质是一个命令行工具,通过对我们创建好的数据库模型文件进行分析和对比,自动创建出对应的数据表,便于我们快速搭建应用。
如何使用YIIC migrate
1. 创建数据表
我们首先需要创建好数据表的设计模型,以及相关的模型文件,我们通常将模型文件存放在app/protected/models/下,并且文件的命名应该与表名一致。
例如,我们希望创建一个user表,那么我们需要创建一个User.php文件,并且在其中使用YII ActiveRecord定义好表结构。
class User extends CActiveRecord
{
public static function model($className=__CLASS__)
{
return parent::model($className);
}
public function tableName()
{
return 'tbl_user';
}
public function rules()
{
return array(
array('username, password', 'required'),
array('username', 'unique'),
array('username, password', 'length', 'max'=>255),
);
}
public function attributeLabels()
{
return array(
'id' => 'ID',
'username' => '用户名',
'password' => '密码',
);
}
}
定义好模型之后,我们需要在app/protected/config/console.php文件中配置好数据库连接,以便migrate能够连接到正确的数据库。
return array(
'basePath'=>dirname(__FILE__).DIRECTORY_SEPARATOR.'..',
'name'=>'My Console Application',
//定义相关组件和模块
'components'=>array(
'db'=>array(
'connectionString' => 'mysql:host=localhost;dbname=mydatabase',
'emulatePrepare' => true,
'username' => 'myusername',
'password' => 'mypassword',
'charset' => 'utf8',
),
),
);
在完成以上两个步骤后,我们就可以使用以下命令来创建用户表:
$ yiic migrate create create_user_table
其中,create_user_table是我们自定义的表名,此时命令会在app/protected/migrations/下创建一个名为mxx_create_user_table.php的文件,其中xx代表创建迁移文件的时间戳。
编辑该文件,并在up()函数中添加对应的创建表的sql语句:
class m200601_000000_create_user_table extends CDbMigration
{
public function up()
{
$this->createTable('tbl_user', array(
'id' => 'pk',
'username' => 'string NOT NULL',
'password' => 'string NOT NULL',
));
}
public function down()
{
$this->dropTable('tbl_user');
}
}
执行以下命令即可自动创建对应的数据表:
$ yiic migrate
2. 修改表结构
在修改之前,我们需要先查询出当前数据库中已有的迁移文件:
$ yiic migrate history
通过这个命令,我们可以查询出数据库中已有的迁移文件,以便于我们知道当前数据库的状态。
接着,我们使用以下命令创建修改迁移文件:
$ yiic migrate create modify_user_table
编辑名为mxx_modify_user_table.php的文件,在up()函数中添加以下代码:
class m200601_000001_modify_user_table extends CDbMigration
{
public function up()
{
$this->addColumn('tbl_user', 'email', 'string');
}
public function down()
{
$this->dropColumn('tbl_user', 'email');
}
}
我们可以在该文件中添加任意的修改表结构的sql语句,最后执行以下命令即可完成修改:
$ yiic migrate
migrate 常用命令
创建新的 migration 文件
yiic migrate create <migration_name>
其中,<migration_name>
为你所需的迁移文件命名。
执行所有的 migration 文件
yiic migrate
执行该命令将会对所有未执行的 migration 文件进行执行,需要注意的是,YII的 migration 是自动记忆已执行的文件的,所以对于已经执行的文件,不需要再执行一次。
回滚 migration
yiic migrate down <step>
其中,<step>
指代需要回滚的 migration 文件的数量,默认值为1,也就是回滚上一步 migration。需要注意的是,如果执行回滚操作后,某个 migration 文件被回滚,那么该 migration 文件之后的所有 migration 文件都将需要重新执行。
查看已执行的 migration 文件列表
yiic migrate history
执行该命令将会查询出已经执行过的 migration 文件列表,以便于我们知道当前的数据库状态。
总结
本文主要介绍了YIIC migrate的基本用法,以及相关命令的使用方法,通过本文的学习,我们可以快速掌握 migrate 的使用方法,同时避免出现很多常见的数据表结构问题。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:YII Framework框架使用YIIC快速创建YII应用之migrate用法实例详解 - Python技术站