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 数据迁移和数据填充的主要内容,如果未能解决你的问题,请参考以下文章

laravel中的数据迁移和数据填充

laravel模型建立和数据迁移和数据填充(数据填充没有成功)未完

laravel框架之数据迁移和数据填充

Laravel 5.2 数据库迁移和数据填充

Thinkphp 数据库迁移和填充

Thinkphp 数据库迁移和填充