欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

thinkphp6.0 数据库迁移migration与数据填充Faker的使用

程序员文章站 2022-05-18 15:59:56
...

之前在学习laravel框架的时候觉得数据迁移和数据填充很好用,所以最近在学习tp6的时候,也想用一下,但是框架里写的比较简单,通过查找相关资料整理一下用法。

数据库迁移工具

首先通过 composer 安装

composer require topthink/think-migration=2.0.*

安装好之后再控制台输入命令

php think

thinkphp6.0 数据库迁移migration与数据填充Faker的使用

创建迁移类文件,首字母必须大写

php think migrate:create UserAccount

可以看到目录下有.\database\migrations\20200218062948_user_account.php

使用实例

<?php

use think\migration\Migrator;
use think\migration\db\Column;

class UserAccount extends Migrator
{
    /**
     * Change Method.
     *
     * Write your reversible migrations using this method.
     *
     * More information on writing migrations is available here:
     * http://docs.phinx.org/en/latest/migrations.html#the-abstractmigration-class
     *
     * The following commands can be used in this method and Phinx will
     * automatically reverse them when rolling back:
     *
     *    createTable
     *    renameTable
     *    addColumn
     *    renameColumn
     *    addIndex
     *    addForeignKey
     *
     * Remember to call "create()" or "update()" and NOT "save()" when working
     * with the Table class.
     */
    public function change()
    {
        $table  =  $this->table('users',array('engine'=>'MyISAM'));
        $table->addColumn('username', 'string',array('limit'  =>  15,'default'=>'','comment'=>'用户名,登陆使用'))
        ->addColumn('password', 'string',array('limit'  =>  32,'default'=>md5('123456'),'comment'=>'用户密码')) 
        ->addColumn('login_status', 'boolean',array('limit'  =>  1,'default'=>0,'comment'=>'登陆状态'))
        ->addColumn('login_code', 'string',array('limit'  =>  32,'default'=>0,'comment'=>'排他性登陆标识'))
        ->addColumn('last_login_ip', 'integer',array('limit'  =>  11,'default'=>0,'comment'=>'最后登录IP'))
        ->addColumn('last_login_time', 'datetime',array('default'=>0,'comment'=>'最后登录时间'))
        ->addColumn('is_delete', 'boolean',array('limit'  =>  1,'default'=>0,'comment'=>'删除状态,1已删除'))
        ->addIndex(array('username'), array('unique'  =>  true))
        ->create();
    }
}

这里可以参考phinx 的文档来使用
phinx官方文档
phinx中文文档

change方法编写完成后在控制台输入以下命令,即可自动创建数据表

php think migrate:run

查看自动创建的表

thinkphp6.0 数据库迁移migration与数据填充Faker的使用

如果数据表创建的有误或者需要新增、修改、删除字段,可以使用php think migrate:rollback命令回滚,修改完之后再次执行 php think migrate:run 即可

数据填充

首先通过命令行安装Faker

composer require fzaninotto/faker

生成一个seed文件

php think seed:create Users

可以看到有一个新的文件.\database\seeds\Users.php

编写假数据的生成逻辑

public function run()
    {
        // faker默认语言是英文会生成英文的数据,在创建实例的时候可以指定为中文
        $faker = Faker\Factory::create('zh_CN');
        $rows = [];
        for ($i = 0; $i < 50; $i++) {
            $rows[] = [
                'username'      => $faker->name,
                'password'      => md5($faker->password),
                 'phone'         => $faker->phoneNumber,
            ];
        }

        Db::table('users')->insertAll($rows);
    }

在命令行输入一下命令并执行

php think seed:run

出现下图红色的部分说明成功了

thinkphp6.0 数据库迁移migration与数据填充Faker的使用

可以查看一下数据库

thinkphp6.0 数据库迁移migration与数据填充Faker的使用

相关标签: thinkphp6