thinkphp6.0 数据库迁移migration与数据填充Faker的使用
安装
composer require topthink/think-migration
创建迁移工具文件
# 执行命令,创建一个操作文件,一定要用大驼峰写法,如下
php think migrate:create AnyClassNameYouWant
# 执行完成后,会在项目根目录多一个database目录,这里面存放类库操作文件
# 文件名类似/database/migrations/20190615151716_any_class_name_you_want.php
基础类型定义
<?php
use think\migration\Migrator;
use think\migration\db\Column;
class AnyClassNameYouWant 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'=>'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();
}
}
其他数据类型定义
<?php
use think\migration\Migrator;
use think\migration\db\Column;
class Stars extends Migrator
{
public function change()
{
$table = $this->table('stars', ['collation' => 'utf8mb4_general_ci']);
$table->addColumn(Column::char('phone',11)->setComment('手机号')->setDefault(null))
->addColumn(Column::enum('sex',['男','女'])->setComment('性别')->setDefault('男'))
->addColumn(Column::char('id_card',18)->setComment('身份证号码')->setDefault(null))
->addColumn(Column::decimal('price')->setComment('用户余额')->setDefault(null))
->addColumn(Column::tinyint('status')->setComment('用户当前状态')->setDefault(0))
->addColumn(Column::dateTime('created_at')->setComment('添加时间')->setDefault(null))
->addColumn(Column::dateTime('updated_at')->setComment('修改时间')->setDefault(null))
->addColumn(Column::dateTime('deleted_at')->setComment('删除时间')->setDefault(null))
->create();
}
}
执行迁移工具
php think migrate:run
# 此时数据库便创建了prefix_users表.
数据填充
首先通过命令行安装Faker
composer require fzaninotto/faker
# 新版 支持php8.0
composer require fakerphp/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,//随机姓名
'login_code' => $faker->address,//随机地址
'password' => md5($faker->password),
// $faker->email,//随机邮箱
// $faker->numberBetween(20,60),//年龄随机在20-60之间
// $faker->randomElement(['农民','工人','程序员']),//随机职业
// $faker->phoneNumber,//随机手机号
// $faker->name,
];
}
\think\facade\Db::table('users')->insertAll($rows);
}
在命令行输入一下命令并执行
php think seed:run
版权属于:LCQ(除特别注明外)
原文链接:https://blog.csdn.net/YoungSuAng/article/details/119648715
本站文章采用 知识共享署名4.0 国际许可协议 进行许可,请在转载时注明出处及本声明!