数据库迁移
.env文件
- 基本环境变量配置,我们直接在.env中配置就好了,laravel默认会优先读取.env中的配置
- 比如数据库配置,都是直接在.env中配置的;不建议在配置文件配置;
数据表的迁移与填充
- 迁移:
创建
数据表的操作+删除
数据表的操作 - 填充:往数据表里填充
写入测试的数据
(数据的插入操作)
迁移文件的创建
- 在迁移过程中, 操作可以分为两个部分:
- 创建与编写迁移文件
- 执行迁移文件
创建和编写迁移文件:
- 迁移文件的默认位置
database\migrations\
- 已经存在的2个文件,如果不打算使用系统自带的认证模块的话需要删除掉,一般都要删除掉,自己写;
- 执行操作框架内默认该目录下(database\migrations)文件;
创建迁移文件
-
案例,需要创建成员的数据表,假设数据表的名字叫做member,迁移文件名:
create_member_table
, 创建member表 -
创建的时候可以通过自动代码生成工具artisan命名来执行迁移文件的生成
语法:
php artisan make:migration 迁移文件名 -
迁移文件不需要分目录管理,可以直接书写名称即可
php artisan make:migration create_member_table
-
up方法,创建数据表的方法
-
down方法,删除数据表的方法
-
编写迁移文件代码, 让其能够实现数据表的创建(up方法)与删除(down方法)
-
写迁移文件, 只修改up和dowm方法,其他基本不变
<?php
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;
class CreateMemberTable extends Migration
{
/**
* 创建数据表的方法
* Run the migrations.
*
* @return void
*/
public function up()
{
//member表名
Schema::create('member', function (Blueprint $table) {
$table->id();
$table->string('name');
$table->timestamp('email_verified_at')->nullable();
$table->string('password');
$table->rememberToken();
$table->timestamps();
});
}
/**
* 删除数据表的方法
* Reverse the migrations.
*
* @return void
*/
public function down()
{
Schema::dropIfExists('member');
}
}
- 还可以在结构生成器上使用一下命令定义表的选项
- $table->engine = ‘InnoDB’ 指定表存储引擎(Mysql)
- $table->charset = ‘utf8’ 指定表的默认字符编码(Mysql)
- $table->collation = ‘utf8_unicode_ci’ 指定表的默认排序格式(Mysql)
- $table->temporary() 创建临时数据表(except SQL Server)
常用字段类型
数据库结构生成器包含构建表示可以指定的各种字段类型
见手册
执行迁移文件
执行分为up执行和down执行
up方法的执行
- 如果在当前的项目中
第一次执行迁移文件
的话, 则需要先去执行: php artisan migrate:install
- 在执行上述命令之后, 在数据表中会多出一个数据表,
migrations
,该表的作用是用于创建记录迁移文件的记录数据表;
SET FOREIGN_KEY_CHECKS=0;
-- ----------------------------
-- Table structure for migrations
-- ----------------------------
DROP TABLE IF EXISTS `migrations`;
CREATE TABLE `migrations` (
`id` int(10) unsigned NOT NULL AUTO_INCREMENT,
`migration` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL,
`batch` int(11) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
-
需要执行up方法, 则需要执行命令:(注意:需要删除系统 自带的迁移文件, 只保留自己的, 因为执行up,这个文件夹下所有迁移文件都会执行)
-
执行迁移文件的:创建数据表
php artisan migrate
-
执行成功之后,
migrations
表里面多了一条记录migration字段值为2020_08_15_060531_create_member_table
;同时创建一张新表member表;