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

【PHP】ThinkPHP5.1 数据库迁移migration与数据填充Faker的使用

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

介绍

之前在用Laravel写项目的时候发现数据库迁移和数据填充很好用,由于新的项目需要使用TP5.1框架开发,所以打算在TP也使用这种方式管理数据,通过查找资料整理了一下使用方法。

think-migration 使用方法

通过 composer 安装

由于think-migration最新版本需要TP6.0框架,所以在TP5.1下安装需要指定2.0.*版本

composer require topthink/think-migration=2.0.*

安装好之后在控制台输入命令查看如否有一下命令

php think

【PHP】ThinkPHP5.1 数据库迁移migration与数据填充Faker的使用

创建迁移类文件

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

 php migrate:create Users

首次生成会有如下提示
【PHP】ThinkPHP5.1 数据库迁移migration与数据填充Faker的使用
输入 ‘y’ 或者 ‘yes’
【PHP】ThinkPHP5.1 数据库迁移migration与数据填充Faker的使用
成功生成了一个迁移类,打开后可以看到有一个默认的 change 方法
【PHP】ThinkPHP5.1 数据库迁移migration与数据填充Faker的使用
在change方法内编写如下代码:

	public function change {
		// 创建表第一个参数为表名
		$table = $this->table('users',array('engine'=>'InnoDB'));
		// 添加字段   limit->字段的长度 defalut->字段的默认值 comment-> 字段备注 null -> 默认为false,字段不能为空,设置为true 可以让字段为空
		$table->addColumn('username', 'string',array('limit' => 100,'default'=>'','comment'=>'用户名'))
		      ->addColumn('password', 'string',array('limit' => 32,'default'=>md5('123456'),'comment'=>'用户密码'))
		      ->addColumn('phone','string',array('limit' => 11,'comment' => '电话','null' => true))
		      ->addColumn('email','string',array('limit' => 32,'default'=>'','comment' => '邮箱','null' => true))
		      ->addColumn('avatar','string',array('limit' => 32,'default'=>'','comment' => '头像','null' => true)) // 
		      ->addColumn('status','integer',array('limit' => 2,'default'=>0,'comment' => '账户状态 0-正常 1-已禁用'))
		      ->addColumn('is_delete', 'boolean',array('limit' => 1,'default'=>0,'comment'=>'删除状态,1已删除'))
		      // 添加唯一索引
		      ->addIndex(array('username'), array('unique' => true))
		       // 添加 create_time 	与 update_time 两个字段
		      ->addTimestamps()
		      ->create();
	}

由于TP官方文档这部分写的很简洁,有些用法并未写出,这里可以参考phinx 的文档来使用
phinx官方文档
phinx中文文档

生成数据库表

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

php think migrate:run

查看自动创建的表
【PHP】ThinkPHP5.1 数据库迁移migration与数据填充Faker的使用
如果数据表创建的有误或者需要新增、修改、删除字段,可以使用php think migrate:rollback命令回滚,修改完之后再次执行 php think migrate:run 即可

数据填充

我们在创建完数据表格后往往需要做一些假数据,在TP中我们可以通过composer来安装这个拓展库

安装Faker

在命令行输入以下命令

composer require fzaninotto/faker

生成seed文件

在命令行输入以下命令

 php think seed:create UserSeeder

首次创建seed文件会有以下提示
【PHP】ThinkPHP5.1 数据库迁移migration与数据填充Faker的使用
输入 ‘y’ 或者 'yes‘
【PHP】ThinkPHP5.1 数据库迁移migration与数据填充Faker的使用
成功生成seed文件

编写假数据的生成逻辑

打开生成的seed文件,在run方法里面编写逻辑

    public function run()
    {
   	    // faker默认语言是英文会生成英文的数据,在创建实例的时候可以指定为中文
        $faker = Faker\Factory::create('zh_CN');

        $data = [];
        // 循环生成50条数据
        for ($i = 0; $i < 50; $i++) {
            $data[] = [
                'username'      => $faker->name,
                'password'      => md5($faker->password),
                'phone'         => $faker->phoneNumber,
            ];
        }
		
		// 将输入插入users表中
        $this->insert('users', $data);
    }

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

 php think seed:run 

【PHP】ThinkPHP5.1 数据库迁移migration与数据填充Faker的使用
出现以上提示就表示数据已经生成了,查看下数据库,已经出现了数据
【PHP】ThinkPHP5.1 数据库迁移migration与数据填充Faker的使用