ThinkPHP5使用migrate迁移和填充数据库
浏览量:163
composer create-project topthink/think=5.0. tp5 --prefer-dist
2、进入项目根目录按住shift+鼠标右键选择在当前目录打开cmd,然后给TP5 安装 migration
composer require topthink/think-migration=1.
注:不要安装2.0版本的扩展 5.0只支持1.的扩展,大家可以在项目的根目录composer.json里面 找到 think-migration 后面改成 1.
3、安装完成过后我们来查看下是否有 migrate 命令
php think
好了,在命令行下运行查看帮助,可以看到新增的命令
4、接下来我们通过 migrate:create 来创建迁移类(首字母必须大写)
前提:appplication 下面的 database.php 文件必须要配置好数据库
php think migrate:create CreateUserTable
注:创建一个新的数据迁移类,php think migrate:create ,文件名须采用驼峰命名法
文件会在database/migrations 下面生成一个文件
5、 在migrate中有三个方法
up:在migrate:run时执行(前提是文件中不存在change方法)
down:在migrate:rollback时执行(前提是文件中不存在change方法)
change:migrate:run 和migrate:rollback时执行 (如果存在该方法 则不会去执行up 与down)
在创建完文件类过后删除里面的change方法
下面就是一个一份migrate文件:
<?php
use thinkmigrationMigrator;
use thinkmigrationdbColumn;
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和_time两个字段
->addIndex(array(\username\), array(\unique\ => true))
->create();
}
public function down(){
$this->Table(\user\);
}
}
createTable(创建表)
renametable(重命名表)
addColumn(添加字段)
renameColumn(重命名字段)
addIndex(添加索引)
addForeignKey(添加外键)
6、完成数据迁移工作 migrate:run
php think migrate:run
注:如果迁移错误可以通过 migrate:rollback -t 回滚到制定的版本
7、接下来创建数据库的填充文件 send:create
php think send:create UserSeeder
下面是一个seender文件的详情:
<?php
use thinkmigrationSeeder;
class UserTableSeeder extends Seeder
{
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(),
\_time\ => getDateTime(),
];
$this->table(\user\)->($data)->save();
}
}
8、开始进行数据库填充 send:run
php think seed:run


感谢支持与鼓励~