laravel笔记-数据库(迁移)
写在前面
时间可贵,善用目录↑
学习Laravel的笔记,仅仅是作为laravel文档笔记,目的是强化对文档的理解,质量不高。
什么是迁移
之前因为不是很明白迁移的意义就没写这方面的笔记,现在差不多明白了就补一下,加深理解。
迁移在我理解就是通过laravel提供的方法对数据库进行操作。
比如说,之前我需要一个数据表我就要使用数据库管理软件来自己创建一个表。
但是在laravel框架中,我们要做的是根据laravel自己的规则用php编写我们需要的数据表信息,然后通过框架自带的工具自动生成表。
当然了,迁移的功能不只创建数据表这么简单,它可以增删改查等很多操作。
但是要注意的是,迁移能起作用的前提是数据库的相关信息配置正确。
生成迁移
我们通过Artisan命令来生成迁移.
例如:建立一个books表
php artisan make:migration creat_books_table
执行完后我们在 database/migrations 目录下可以看到一个新文件:
20XX_XX_XXXXXX_creat_books_table.php
这个就是我们刚刚创建的迁移,前半部分是生成的时间,用来判断顺序。
编写迁移
接下来我们看我们刚刚生成的迁移文件。
use Illuminate\Support\Facades\Schema;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Database\Migrations\Migration;
class CreatBooksTable extends Migration
{
/**
* Run the migrations.
*
* @return void
*/
public function up()
{
//
}
/**
* Reverse the migrations.
*
* @return void
*/
public function down()
{
//
}
}
我们可以看到,迁移继承Migration类。
迁移中包含两个方法:up用来新增表、列或者索引,down用来进行反向操作。
在迁移中,我们使用schema构建器来创建和修改表,我们接着上面的例子来 创建books表.
在up方法中使用Schema门面来进行操作:
use Illuminate\Support\Facades\Schema;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Database\Migrations\Migration;
class CreatBooksTable extends Migration
{
/**
* 执行迁移
*
* @return void
*/
public function up()
{
//使用create方法创建表(表名, 表结构的闭包函数)
Schema::create('books', function (Blueprint $table) {
//创建自增id
$table->increments('id');
$table->string('title');
$table->string('author');
$table->timestamps();
});
}
/**
* 撤销迁移
*
* @return void
*/
public function down()
{
//使用drop删除表
Schema::drop('books');
}
}
运行迁移
通过上面的操作,我们已经编写了一个简单的迁移。
下面我们就执行它,还是通过Artisan命令:
php artisan migrate
通过上面的命令,laravel会自动执行所有没被执行的迁移。
比如上面的例子,我们会在你配置的数据库创建books表。
强制迁移
当然,有时候执行的迁移是毁灭性的,需要进行确认,如果想 强制运行迁移可以:
php artisan migrate --force
回滚迁移
就是对最近的一次迁移进行rollback:
php artisan migrate:rollback
当然如果希望回滚指定数目的迁移可以使用如下命令:
php artisan migrate:rollback --step=5
回滚所有迁移:
php artisan migrate:reset
如果想重建数据库可以使用:
php artisan migrate:refresh
这样先会回滚所有迁移然后运行所有迁移(相当于重建数据库)
当然也可以重建部分迁移:
php artisan migrate:refresh --step=5
关于schema
上面提到我们通过schema对数据库进行操作。
schema可以操作表,列,索引。
关于schema的相关操作,查手册~