tp6生成数据迁移 数据填充

前言

这里简单介绍一下 tp6数据迁移有两种创建模式

1.use think\migration\Migrator; 只能插件自带一些字段类型 如下:(biginteger,binary,boolean,date,datetime,decimal,float,integer,string,text,time,timestamp,uuid,),不支持 enum和tinyint 参考网址
另外,MySQL adapter 支持 enum 、set 、blob 和 json (json 需要 MySQL 5.7 或者更高)
Postgres adapter 支持 smallint 、json 、jsonb 和 uuid (需要 PostgresSQL 9.3 或者更高)
2.use think\migration\db\Column; 里面包含并支持数据库所有的字段类型


一、使用步骤

1.thinkphp6数据迁移

代码如下:

创建迁移文件

php think migrate:create Event

编辑数据表字段

方法一:

public function change()
    {
        $table  =  $this->table('events',array('engine'=>'MyISAM','collation'=>'utf8_unicode_ci'));
        $table->addColumn('id', 'integer',array('limit'  =>  11,'default'=>null,'comment'=>'用户id'))
            ->addColumn('title', 'string',array('limit'   => 30,'comment'=>'预约时间'))
            ->addColumn('img', 'string',array('limit'   => 255,'default'=>null,'comment'=>'订单编号'))
            //boolean 为短整型(tinyint 默认长度为1 无法更改)
           ->addColumn('score', 'boolean',array('comment'=>'预约状态'))
            ->addColumn('number', 'integer',array('limit'=>10,'comment'=>'分类方'))
            ->addColumn('detail', 'text',array('default'=>null,'comment'=>'备注'))
            ->addColumn('created_at', 'datetime',array('default'=>null,'comment'=>'创建时间'))
            ->addColumn('updated_at', 'datetime',array('default'=>null,'comment'=>'修改时间'))
            ->addColumn('deleted_at', 'datetime',array('default'=>null,'comment'=>'删除时间'))
            ->create();
    }

方法二:

public function change()
    {
        $table  =  $this->table('user_infos',array('engine'=>'MyISAM','collation'=>'utf8_unicode_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

2.thinkphp数据填充

安装数据填充插件

composer require fzaninotto/faker
composer require fakerphp/faker (新版  支持php8.0

创建数据填充 文件

php think seed:create UserSeed

代码如下:

<?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

总结

thinkphp数据填充和数据迁移的方法和laravel的方法有些类似 所以这里不过多讲述 小白一枚欢迎大家提出一些宝贵的意见。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
TP6 是一个开源的 PHP 框架,用于构建 Web 应用程序。在应用程序中,为了提高性能和降低数据库访问次数,通常会使用缓存技术。而在 TP6 框架中,可以通过删除缓存来处理数据变化的情况。 当数据发生变化时,我们需要在应用程序中删除相关的缓存,以便下次查询时能够获取到最新的数据TP6 框架提供了丰富的缓存管理功能,可以方便地进行缓存的删除操作。 首先,我们需要确定哪些缓存与数据变化相关。一般来说,与数据变化相关的缓存包括缓存的查询结果、缓存的页面片段等。可以通过查看应用程序的代码,找到与数据变化相关的缓存项。 然后,我们可以使用 TP6 框架提供的缓存管理功能来删除相关的缓存。可以使用 `Cache::delete` 方法,这个方法接受缓存标识符作为参数,可以通过标识符快速定位到对应的缓存项,并将其删除。例如,如果我们的缓存标识符是 `my_cache_key`,可以通过以下代码删除缓存: ```php \Cache::delete('my_cache_key'); ``` 此外,如果我们无法确定需要删除哪些缓存项,可以考虑删除所有缓存。我们可以使用 `Cache::clear` 方法来清空所有缓存,具体代码如下: ```php \Cache::clear(); ``` 不过,删除所有缓存可能会导致性能下降,因为之后的查询需要重新生成缓存。因此,我们应该在删除缓存时权衡性能和实时数据的需求。 总体而言,TP6 框架提供了简单而强大的缓存管理功能,可以通过删除缓存来处理数据变化的情况。通过合理地使用缓存管理功能,可以提高应用程序的性能和用户体验。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值