袁来如此的工作笔记
袁来如此的工作笔记
竹杖芒鞋轻胜马,谁怕? 一蓑烟雨任平生。

ThinkPHP5使用migrate迁移和填充数据库

浏览量:163

1、通过 composer  安装ThinkPHP 5.
composer create-project topthink/think=5.0. tp5  --prefer-dist

2、进入项目根目录按住shift+鼠标右键选择在当前目录打开cmd,然后给TP5 安装 migration
composer require topthink/think-migration=1.
    注:不要安装2.0版本的扩展 5.0只支持1.的扩展,大家可以在项目的根目录composer.json里面       找到 think-migration 后面改成 1.

3、安装完成过后我们来查看下是否有 migrate 命令

php think   

   好了,在命令行下运行查看帮助,可以看到新增的命令

4、接下来我们通过 migrate:create 来创建迁移类(首字母必须大写)

     前提:appplication 下面的 database.php 文件必须要配置好数据库

php think migrate:create CreateUserTable


   注:创建一个新的数据迁移类,php think migrate:create ,文件名须采用驼峰命名法

       文件会在database/migrations 下面生成一个文件

5、 在migrate中有三个方法

       up:在migrate:run时执行(前提是文件中不存在change方法)

      down:在migrate:rollback时执行(前提是文件中不存在change方法)

      change:migrate:run 和migrate:rollback时执行 (如果存在该方法 则不会去执行up 与down)

      在创建完文件类过后删除里面的change方法

     下面就是一个一份migrate文件:

<?php

use thinkmigrationMigrator;
use thinkmigrationdbColumn;

class CreateUserTable extends Migrator
{
   
    public function up()
    {
        $table = $this->table(\user\);
        $table->addColumn(\username\, \string\,array(\limit\ => 32,\default\=>\\,\comment\=>\用户名\))
            ->addColumn(\nickname\, \string\,array(\limit\ => 32,\default\=>\\,\comment\=>\昵称\))
            ->addColumn(\password\, \string\,array(\limit\ => 100,\default\=>\\,\comment\=>\用户密码\))
            ->addColumn(\salt\, \string\,array(\limit\ => 50,\default\=>\\,\comment\=>\盐\))
            ->addColumn(\login_status\, \integer\,array(\limit\ => 11,\default\=>0,\comment\=>\登陆状态\))
            ->addColumn(\login_code\, \string\,array(\limit\ => 32,\default\=>0,\comment\=>\排他性登陆标识\))
            ->addColumn(\last_login_ip\, \string\,array(\limit\ => 30,\default\=>0,\comment\=>\最后登录IP\))
            ->addColumn(\last_login_time\, \timestamp\,array(\comment\=>\最后登录时间\))
            ->addTimestamps()   //默认生成create_time和_time两个字段
            ->addIndex(array(\username\), array(\unique\ => true))
            ->create();
    }

   
    public function down(){
        $this->Table(\user\);
    }

}

createTable(创建表)
renametable(重命名表)
addColumn(添加字段)
renameColumn(重命名字段)
addIndex(添加索引)
addForeignKey(添加外键)


6、完成数据迁移工作 migrate:run

php think migrate:run




  注:如果迁移错误可以通过 migrate:rollback  -t 回滚到制定的版本

7、接下来创建数据库的填充文件 send:create 

php think send:create UserSeeder


 下面是一个seender文件的详情:

<?php

use thinkmigrationSeeder;

class UserTableSeeder extends Seeder
{
   
    public function run()
    {
        $data  =
           [
               \username\        =>  \admin\ ,
               \nickname\        =>  \Bob\,
               \password\        =>  \9OHkSqf4SZkZNkMuCzTwU58KSKF7qblCLgJKq6GuWjc\,
               \salt\            =>  \qfin3eg8e4g0c4okgkkg4cc04gcscwk \,
               \login_status\    =>  \1\,
               \login_code\      =>  \123456\,
               \last_login_ip\   =>  \127.0.0.1\,
               \last_login_time\ =>  getDateTime(),
               \create_time\     =>  getDateTime(),
               \_time\     =>  getDateTime(),
            ];
        $this->table(\user\)->($data)->save();
    }
}



8、开始进行数据库填充 send:run

php think seed:run
 


打赏