YII Framework框架使用YIIC快速创建YII应用之migrate用法实例详解

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技术站

(0)
上一篇 2023年5月22日
下一篇 2023年5月22日

相关文章

  • PHP使用PDO操作sqlite数据库应用案例

    下面是“PHP使用PDO操作sqlite数据库应用案例”的完整攻略: 一、准备工作 1. 安装PHP和SQLite 首先,我们需要安装PHP和SQLite。在Linux系统上可以使用包管理器安装,比如在Ubuntu上可以使用以下命令进行安装: sudo apt-get install php7.2 php7.2-sqlite sudo apt-get ins…

    database 2023年5月21日
    00
  • ubuntu 14.04 oracle 11g 64位数据库安装图文教程

    Ubuntu 14.04 Oracle 11g 64位数据库安装图文教程 本文将详细介绍在 Ubuntu 14.04 上安装 Oracle 11g 64位数据库的步骤和注意事项。 前置条件 在安装 Oracle 11g 数据库之前,需要先满足以下要求: Ubuntu 14.04 64位操作系统 系统中安装了 JDK(Java Development Kit)…

    database 2023年5月22日
    00
  • spring整合atomikos实现分布式事务的方法示例

    下面我将为您详细讲解“spring整合atomikos实现分布式事务的方法示例”的完整攻略。 前置条件 要实现这一功能,需要先满足以下条件:- 已经安装了Atomikos事务管理器;- 项目已经使用Spring框架搭建。 步骤一:修改配置文件 在Spring配置文件中添加如下配置: <!– JTA 事务管理器 –> <bean id=&…

    database 2023年5月21日
    00
  • MySQL设置事务自动提交(开启和关闭)

    MySQL默认情况下是自动提交事务的,即每一个SQL语句执行后,都会自动提交这个事务。但是,有时候我们需要手动进行事务提交或事务回滚。 MySQL设置事务自动提交开启方法: 1. 通过命令行方式开启自动提交 在命令行中输入以下命令: mysql> SET autocommit = 1; 这个命令将启用自动提交事务功能。 2. 通过配置文件方式开启自动提…

    MySQL 2023年3月10日
    00
  • 详解MySQL 数据库范式

    详解MySQL 数据库范式 什么是数据范式 数据范式是一种设计数据库表的标准,它能够减少数据冗余,提高数据管理的效率,降低了数据修改所造成的风险。 数据范式根据数据之间的关系,分为不同级别。较低级别的范式被包含在较高级别的范式之中。 目前最广泛使用的范式有6个级别,分别是第一范式(1NF)、第二范式(2NF)、第三范式(3NF)、巴斯-科德范式(BCNF)、…

    database 2023年5月19日
    00
  • 如何使用Python在MySQL中使用全文索引?

    在MySQL中,可以使用全文索引来加速文本搜索。在Python中,可以使用MySQL连接来执行全文索引查询。以下是在Python中使用全文索引的完整攻略,包括全文索基本语法、使用全文索引的示例以及如何在Python中使用全文索引。 全文索引的基本语法 在MySQL中,可以使用FULLTEXT关键字来创建全文索引。全文索引只能用于MyISAM和InnoDB。以…

    python 2023年5月12日
    00
  • bitronix 连接 MySQL 出现MySQLSyntaxErrorException 的解决方法

    下面是“bitronix 连接 MySQL 出现 MySQLSyntaxErrorException 的解决方法”的攻略。 问题背景 在使用 bitronix 连接 MySQL 时,可能会遇到 MySQLSyntaxErrorException 错误,这个错误通常显示为语法错误。这是因为在使用 bitronix 的时候,可能会出现一些配置问题或者代码问题。 …

    database 2023年5月21日
    00
  • Ping CAP CTO、Codis作者谈redis分布式解决方案和分布式KV存储

    此文根据【QCON高可用架构群】分享内容,由群内【编辑组】志愿整理,转发请注明出处。 苏东旭,Ping CAP CTO,Codis作者 开源项目Codis的co-author黄东旭,之前在豌豆荚从事infrastructure相关的工作。现在在创业公司PingCAP。 本次分享的内容主要包括五个大部分: Redis、RedisCluster和Codis; 我…

    Redis 2023年4月11日
    00
合作推广
合作推广
分享本页
返回顶部