larval 数据库迁移

很多人可能在学习Laravel框架的时候,对Laravel的数据库迁移(以下简称Migration)存在着疑惑:到底什么是Migration?为什么要用Migration?Migration到底方便在哪里?

好了,抱着这些问题,我们今天就一起来学习Migration。

问题1:什么是Migration?

回答:可以将Migration看作一种数据库的VCS(Version Control System),即版本控制系统。可以通过Laravel的artisan命令快速创建或还原Migration文件,来进行数据库的构架。


问题2:为什么要用Migration?

回答:使用Migration可以有效地对数据库进行版本控制,并且遵从了Single Responsibility Principle(单一职责原则),更加方便数据库的操控。


问题3:Migration到底方便在哪里?

基本不需要写SQL代码就能简单快速地组建起数据库结构,并且可以迅速Migrate或者Rollback,实现了数据库的版本控制和管理。


要使用Migration,我们可以用artisan命令来创建一个Migration文件:

# 先进入我们的Laravel项目的根目录
$ cd my-laravel-project

# 输入以下artisan命令
$ php artisan make:migration create_samples_table --create=samples

Create Migration

注意--create==samples这个选项会告诉artisan我们是要建立一个新的名为samplestable,所以artisan会自动在database\migrations目录下建立一个叫2017_03_13_061422_create_samples_table.php的文件(其中前缀是创建该文件的日期和时间,所以每个人会稍有不同),并且会自动填充好Schema::create这个方法,方便我们创建更多的column

Create Samples Table

可以看到,Laravel已经为我们添加了三个Columns,一个是id,另外两个分别是由$table->timestamps()创建的created_atupdated_at(类型是DATETIME)。

Laravel默认假设每个table都会存在一个id column,并且要求每个table都要有created_atupdated_at这两个column

如果我们要在samples里新增加一个叫my_sample_codeVARCHAR类型的column,我们该怎么做呢?

很简单,只需要加上这行:

$table->string('my_sample_code');

如果我们想限制VARCHAR的长度,那么可以在第二个参数中进行添加:

$table->string('my_sample_code', 100);

Schema::Create


那么我们现在有了migration文件了,怎么样才能在数据库里建立起我们的samplestable呢?

只需要在我们的Laravel根目录下运行一个简单的artisan命令:

$ php artisan migrate

Voila! 大功告成! 
现在我们在数据库里,就能看到一个叫samplestable了。

那么如果我们想对这个table进行修改或者添加其他column呢? 
那么我们有两种选择: 
第一种,如果刚刚建立起table,并没有数据,可以选择rollback或者reset,即使用

$ php artisan migrate:rollback

或者

$ php artisan migrate:refresh

值得注意的是,rollback这个命令默认选项只会向之前恢复一次migration,而refresh将会把所有migration全部重置,相当于

$ php artisan migrate:reset
$ php artisan migrate

其中reset命令会将所有的migration rollback到最初阶段。


第二种方法,就是再创建一个migration文件。但是我们需要先添加一个dependency。打开项目根目录下的composer.json文件,在require栏中添加doctrine/dbal这个package:

    "require": {
        "php": ">=5.6.4",
        "laravel/framework": "5.4.*",
        "laravel/tinker": "~1.0",
        "doctrine/dbal": "2.5.0"
    },

接下来运行composer install这个命令即可。

好了,如过我们想把之前我们添加的my_sample_code这个column长度限制为200,那么我们可以建立一个新的migration文件:

$ php artisan make:migration modify_samples_table --table=samples

其中我们在Schema::table函数中填入以下代码:

$table->string('my_sample_code', 200)->change();

然后再次运行migrate,就是这么简单:

$ php artisan migrate

那么如果我们想把这个column改成其他类型呢?比如我们想将其换成TEXT类型,那么需要怎么做呢?

$table->text('my_sample_code')->change();

再次运行migrate即可!

Samples Table Change Column Type

可以看到,my_sample_code这个column已经变成了TEXT类型。

以上就是Laravel数据库迁移的基本技巧!有问题欢迎共同探讨。

版权声明:尊重原创喔,转载请注明 https://blog.csdn.net/lgyaxx/article/details/61615351
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值