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

介绍

之前在用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的使用_第1张图片

创建迁移类文件

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

 php migrate:create Users

首次生成会有如下提示
在这里插入图片描述
输入 ‘y’ 或者 ‘yes’
在这里插入图片描述
成功生成了一个迁移类,打开后可以看到有一个默认的 change 方法
【PHP】ThinkPHP5.1 数据库迁移migration与数据填充Faker的使用_第2张图片
在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的使用_第3张图片
如果数据表创建的有误或者需要新增、修改、删除字段,可以使用php think migrate:rollback命令回滚,修改完之后再次执行 php think migrate:run 即可

数据填充

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

安装Faker

在命令行输入以下命令

composer require fzaninotto/faker

生成seed文件

在命令行输入以下命令

 php think seed:create UserSeeder

首次创建seed文件会有以下提示
在这里插入图片描述
输入 ‘y’ 或者 'yes‘
在这里插入图片描述
成功生成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的使用_第4张图片
出现以上提示就表示数据已经生成了,查看下数据库,已经出现了数据

你可能感兴趣的:(PHP)