代码的时空旅行

think-migration扩展包

1、首先通过 composer 安装

composer require topthink/think-migration

“`

2、创建迁移类文件,首字母必须大写

php think migrate:create User

 

<?php

use think\migration\Migrator;

use think\migration\db\Column;

class User extends Migrator

{

    public function change()

    {

        $table = $this->table('users', array('engine' => 'MyISAM'));

        $table->addColumn('name', 'string', array('limit' => 15, 'default' => '', 'comment' => '用户名,登陆使用'))

            ->addColumn('nickname', 'string', array('limit' => 32, 'default' => '', 'comment' => '昵称'))

            ->addColumn('email', 'string', array('limit' => 32, 'default' => '', 'comment' => '邮箱'))

            ->addColumn('mobile', 'string', array('limit' => 32, 'default' => '', 'comment' => '用户手机号'))

            ->addColumn('wechat', 'string', array('limit' => 32, 'default' => '', 'comment' => '用户微信'))

            ->addColumn('password', 'string', array('limit' => 32, 'default' => md5(' 123456'), 'comment' => '用户密码'))

            ->addColumn('integral', 'integer', array('limit' => 32, 'default' => 100, 'comment' => '用户积分'))

            ->addColumn('is_delete', 'boolean', array('limit' => 1, 'default' => 0, 'comment' => '删除状态,1已删除'))

            ->addColumn('introduce', 'string', array('limit' => 64, 'default' => 0, 'comment' => '个人简介'))

            ->addColumn('addition', 'char', array('limit' => 96, 'default' => '', 'comment' => '附加字段'))

            ->addColumn('create_time', 'datetime', array('default' => 'CURRENT_TIMESTAMP'))

            ->addColumn('update_time', 'datetime', array('null' => true))

            ->addColumn('delete_time', 'datetime', array('null' => true))

            ->addIndex(array('name'), array('unique' => true))

            ->create();

    }

}

1. change方法编写完成后在控制台输入以下命令,即可自动创建数据表

2. php think migrate:run,表就创建成功了。

### json说明

mysql5.1后支持json,在模型迁移文件中如果设置json格式需要采用char类型

申明json字段,在模型中定义protected $json=[‘addition’];如果是申明了json,在show 方法进行显示的时候不需要$user->json([‘addition’])->update($data);,在加上json([‘addition’])进行说明输出,系统自动转换

“`

->addColumn(‘addition’, ‘char’,array(‘limit’ => 96,’default’=>”,’comment’=>’附加字段‘))

“`

数据保存指明哪一个列是json格式,说明标记是一个数组结构

“`

$user->json([‘addition’])->save($data);//保存

$user=UserModel::json([‘addition’])->find(23);//查询

$user->json([‘addition’])->update($data);//更新

$data = [

            ‘name’ => ‘XX‘,

            ’email’ => ‘XXX@hotmail.com’,

            ‘nickname’ => ‘XXX‘,

            ‘password’ => ‘admin888’,

            ‘integral’ => ‘9999’,

            ‘introduce’ => ‘超级管理员‘,

            ‘addition->sex’ =>’unknown’

        ];

        $user=UserModel::find(23);

        $user->json([‘addition’])->update($data);

        //修改json中的某一个字段

“`

##数据填充:生成测试数据

composer require fzaninotto/faker

php think seed:create Users

“`

<?php

use think\migration\Seeder;use think\facade\Db;

class Users extends Seeder{   

public function run()    {       

$faker = Faker\Factory::create(‘zh_CN’); //支持中心,赞       

$rows = [];       

for ($i = 0; $i < 20; $i++) {           

$rows[] = [               

‘name’      => $faker->name,               

‘password’      => md5($faker->password),               

’email’      => $faker->email,               

‘mobile’         => $faker->phoneNumber,               

‘introduce’         => $faker->sentence($nbWords = 6, $variableNbWords = true),                ‘integral’=>1000,               

‘is_delete’=>false,           

];       

Db::name(‘users’)->create($rows);

}       

//或者Db::name(‘users’)->insertAll($rows);   

}

}

“`

php think seed:run

### ###配置

重点来了【穿越时空】

数据库脏数据内容过多,或者需要修改表结构,

php think migrate:rollback。

 

 

© 版权声明
THE END
喜欢就支持一下吧
点赞11
分享
评论 抢沙发
袁浩的头像孙先森资源|专注优质网络资源教程分享孙先森资源教程

昵称

取消
昵称表情代码图片