FastAdmin 下 Migrate 的安装使用
Fastadmin下安装使用Migrate数据库迁移工具
由于Fastadmin使用的Thinkphp框架为5.0.x 所以 Migrate版本也只能支持到 1.*
此处还需要注意的是,composer 当前为2.0版本,然而Fastadmin还是使用的composer 1.0版本,所以composer版本也要下载1版本
1. 安装
composer require topthink/think-migration=1.*
2. 查看下是否有 migrate 命令
php think
3. 创建迁移类(首字母必须大写)
前提:appplication 下面的 database.php 文件必须要配置好数据库
php think migrate:create CreateUserTable
注:创建一个新的数据迁移类,php think migrate:create ,文件名须采用驼峰命名法
文件会在database/migrations 下面生成一个文件
4. 在migrate中有三个方法
up:在migrate:run时执行(前提是文件中不存在change方法)
down:在migrate:rollback时执行(前提是文件中不存在change方法)
change:migrate:run 和migrate:rollback时执行 (如果存在该方法 则不会去执行up 与down)
下面就是一个一份migrate文件:
<?php
use think\migration\Migrator;
use think\migration\db\Column;
class CreateUserTable extends Migrator
{
/**
* 建立用户表
*/
public function up()
{
$table = $this->table('user');
$table->addColumn('username', 'string',array('limit' => 32,'default'=>'','comment'=>'用户名'))
->addColumn('nickname', 'string',array('limit' => 32,'default'=>'','comment'=>'昵称'))
->addColumn('password', 'string',array('limit' => 100,'default'=>'','comment'=>'用户密码'))
->addColumn('salt', 'string',array('limit' => 50,'default'=>'','comment'=>'盐'))
->addColumn('login_status', 'integer',array('limit' => 11,'default'=>0,'comment'=>'登陆状态'))
->addColumn('login_code', 'string',array('limit' => 32,'default'=>0,'comment'=>'排他性登陆标识'))
->addColumn('last_login_ip', 'string',array('limit' => 30,'default'=>0,'comment'=>'最后登录IP'))
->addColumn('last_login_time', 'timestamp',array('comment'=>'最后登录时间'))
->addTimestamps() //默认生成create_time和update_time两个字段
->addIndex(array('username'), array('unique' => true))
->create();
}
/**
* 提供回滚的删除用户表方法
*/
public function down(){
$this->dropTable('user');
}
}
createTable(创建表)
renameTable(重命名表)
addColumn(添加字段)
renameColumn(重命名字段)
addIndex(添加索引)
addForeignKey(添加外键)
5. 完成数据迁移工作 migrate:run
php think migrate:run
注:如果迁移错误可以通过 migrate:rollback -t
回滚到制定的版本
6. 接下来创建数据库的填充文件 send:create
php think send:create UserSeeder
下面是一个seender文件的详情:
<?php
use think\migration\Seeder;
class UserTableSeeder 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()
{
$data =
[
'username' => 'admin' ,
'nickname' => 'Bob',
'password' => '9OHkSqf4SZkZNkMuCzTwU58KSKF7qblCLgJKq6GuWjc',
'salt' => 'qfin3eg8e4g0c4okgkkg4cc04gcscwk ',
'login_status' => '1',
'login_code' => '123456',
'last_login_ip' => '127.0.0.1',
'last_login_time' => getDateTime(),
'create_time' => getDateTime(),
'update_time' => getDateTime(),
];
$this->table('user')->insert($data)->save();
}
}
7. 开始进行数据库填充 send:run
php think seed:run