Thinkphp6 数据迁移和数据填充
Posted autofelix
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Thinkphp6 数据迁移和数据填充相关的知识,希望对你有一定的参考价值。
〝 古人学问遗无力,少壮功夫老始成 〞
在学习thinkphp框架时候,数据库的迁移是一个比较人性化的操作,不仅可以将数据库的结构以代码的形式保存下来,而且在团队开发中,能够在很大程度上增加团队的开发效率。如果这篇文章能给你带来一点帮助,希望给飞兔小哥哥一键三连,表示支持,谢谢各位小伙伴们。
目录
一、定义特殊字段类型
- 官方给的数据库迁移文档中 ,只能定义很少的并且常见的数据类型
- 对于enum和tinyint等类型是不支持的
<?php
// 官方引用
use think\\migration\\Migrator;
// 所有类型应该引用, 里面包含并支持数据库所有的字段类型
use think\\migration\\db\\Column;
二、创建迁移文件
php think migrate:create Users
三、基础数据类型定义
<?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('name', 'string', ['limit' => 100, 'comment' => '姓名'])
->addColumn('avatar', 'string', ['limit' => 255, 'default' => '', 'comment' => '头像'])
->addColumn('birthday', 'date', ['limit' => 10, 'comment' => '生日'])
->addColumn('hometown', 'string', ['limit' => 50, 'default' => '', 'comment' => '家乡'])
->addColumn('age', 'integer', ['limit' => 3, 'default' => 0, 'comment' => '年龄'])
->addColumn('height', 'integer', ['limit' => 3, 'default' => 0, 'comment' => '身高'])
->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
六、数据填充插件
composer require fzaninotto/faker
# 新版 支持php8.0
composer require fakerphp/faker
七、创建数据填充文件
php think seed:create UserSeed
八、创建填充逻辑
- 新增50条数据信息
<?php
use think\\migration\\Seeder;
class UsersSeed extends Seeder
/**
* Run Method.
*
* Write your database seeder using this method.
*
* More information on writing seeders is available here:
* http://docs.phinx.org/en/latest/seeding.html
*/
public function run()
// faker默认语言是英文会生成英文的数据,在创建实例的时候可以指定为中文
$faker = Faker\\Factory::create('zh_CN');
//初始化数组
$rows = [];
//拼装数组
for ($i = 0; $i < 50; $i++)
$rows[] = [
'title' => $faker->userName,
'img' => $faker->imageUrl(),
'score' => $faker->numberBetween(100,3000),
'number' => $faker->numberBetween(1,20),
'detail' => $faker->text,
'created_at' => $faker->date(),
'updated_at' => $faker->date(),
];
//截断数据表
\\app\\demo\\model\\User::truncate('events');
//执行批量填充(无法更新时间戳)
\\app\\demo\\model\\User::insertAll($rows);
//执行批量填充(自动更新时间戳)需在模型或config配置中修改时间戳自动写入
(new UserInfo())->saveAll($rows);
九、数据填充
php think seed:run
以上是关于Thinkphp6 数据迁移和数据填充的主要内容,如果未能解决你的问题,请参考以下文章