欢迎您, 来到 宁时修博客.^_^

thinkPHP5.0.*利用组件实现数据迁移

2018/09/29 宁时修 php,thinkPHP 5.0 958
以thinkphp5.0为案例实现数据迁移

以thinkphp5.0为案例实现数据迁移

首先通过composer安装

composer require topthink/think-migration:^1.*

1.0版本是针对tp5.0  tp5.1对应 2.0版本

安装完成之后

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

>php think
 migrate
  migrate:create     Create a new migration
  migrate:rollback   Rollback the last or to a specific migration
  migrate:run        Migrate the database
  migrate:status     Show migration status
 optimize
  optimize:autoload  Optimizes PSR0 and PSR4 packages to be loaded wit
h classmaps too, good for production.
  optimize:config    Build config and common file cache.
  optimize:route     Build route cache.
  optimize:schema    Build database schema cache.
 seed
  seed:create        Create a new database seeder
  seed:run           Run database seeders


通过命令创建迁移类,注意首字母必须大写 

>php think migrate:create WldAdmin

可以看到目录下有新文件 .\database\migrations\20180929082320_wld_admin.php


编写迁移类

<?php
use think\migration\Migrator;
use think\migration\db\Column;
class WldAdmin extends Migrator
{
    /**
     * 建立管理员表
     */
    public function up()
    {
        // 创建表
        $table = $this->table('wld_admin',['id' => 'uid','engine'=>'InnoDB','charset' => 'utf8','comment' => '管理员表']);
        $table
            ->addColumn('username', 'string',['limit' => 20,'default'=>'','comment'=>'用户名'])
            ->addColumn('nickname', 'string',['limit' => 50,'default'=>'','comment'=>'昵称'])
            ->addColumn('password', 'string',['limit' => 32,'default'=> '','comment'=>'密码'])
            ->addColumn('avatar', 'string',['limit' => 100,'default'=> '','comment'=>'头像'])
            ->addColumn('email', 'string',['limit' => 15,'default'=> '','comment'=>'电子邮箱'])
            ->addColumn('login_time', 'integer',['limit' => 10,'default'=> 0,'comment'=>'登录时间'])
            ->addColumn('create_time', 'integer',['limit' => 10,'default'=> 0,'comment'=>'创建时间'])
            ->addColumn('update_time', 'integer',['limit' => 10,'default'=> 0,'comment'=>'更新时间'])
            ->addColumn('is_lock', 'boolean',['limit' => 1,'default'=>0,'comment'=>'是否锁住 1:正常 2:锁住'])
            ->addColumn('last_login_ip', 'string',['limit' => 50,'default'=> '','comment'=>'用户最后登录的ip'])
            ->addIndex(['username'], ['unique' => true])
            ->save();
            
        // 插入数据
        $rows = [
            [
                'uid'    => 1,
                'username'  => 'admin',
                'nickname' => 'Admin',
                'password' => '5a2e86c1c3c2d73dc8eb87c18331ae2e',
                'avatar' => '/assets/img/avatar.png',
                'email' => 'admin@admin.com',
                'login_time' => '',
                'create_time' => time(),
                'update_time' => '',
                'is_lock' => 1,
                'last_login_ip' => ''
            ],
            [
                'uid'    => 2,
                'username'  => 'users',
                'nickname' => '宁时修',
                'password' => '5a2e86c1c3c2d73dc8eb87c18331ae2e',
                'avatar' => '',
                'email' => 'admin@admin2.com',
                'login_time' => '',
                'create_time' => time(),
                'update_time' => '',
                'is_lock' => 1,
                'last_login_ip' => ''
            ]
        ];
        $this->table('wld_admin')->insert($rows)->save();
    }
    
    /**
     * 提供回滚的删除用户表方法
     */
    public function down()
    {
        $this->dropDatabase('wld_admin');
    }
}

完成迁移类后 执行迁移命令

在执行迁移命令前,你需要配置一下基本的数据库信息

打开appcalition/database.php

return [
    // 数据库类型
    'type'            => 'mysql',
    // 服务器地址
    'hostname'        => '127.0.0.1',
    // 数据库名
    'database'        => 'tp5',
    // 用户名
    'username'        => 'root',
    // 密码
    'password'        => 'root',
    // 端口
    'hostport'        => '3306',
]
> php think migrate:run

执行成功后,可以看到一下结果

111.png

看到这个结果就代表数据已经迁移完成了 ^_^

关于数据迁移更多的信息请查看 http://docs.phinx.org/en/latest/


点赞
说说你的看法

所有评论: (0)

# 加入组织

1、用手机QQ扫左侧二维码

2、搜Q群:1058582137

3、点击 宁时修博客交流群