laravel数据库迁移

Posted 岁月如歌

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了laravel数据库迁移相关的知识,希望对你有一定的参考价值。

laravel号称世界上最好的框架,数据库迁移算上一个,在这里先简单入个门:

laravel很强大,它把表中的操作写成了migrations迁移文件,
然后可以直接通过迁移文件来操作表.
所以 , 数据迁移文件就是 操作表的语句文件 操作表的语句文件
为什么用迁移文件 , 而不直接敲 sql 操作表 ?
1.  便于团队统一操作表.
2.  出了问题,容易追查问题和回溯,有历史回退功能.

先创建一个库:

配置一下文件,修改.env中的参数

 

cmd.exe命令行输入如下命令创建一个表的迁移文件:php artisan make:migration create_table_liuyan --create=liuyan

 

先不忙这理解这个命令的意思,且看执行这个命令后生成的一个文件:

 

打开这个文件,是 php文件 :

<?php

use Illuminate\\Database\\Schema\\Blueprint;
use Illuminate\\Database\\Migrations\\Migration;

class CreateTableLiuyan extends Migration
{
    /**
     * Run the migrations.
     *
     * @return void
     */
    public function up()
    {
        Schema::create(\'liuyan\', function (Blueprint $table) {
            $table->increments(\'id\');
            $table->timestamps();
        });
    }

    /**
     * Reverse the migrations.
     *
     * @return void
     */
    public function down()
    {
        Schema::drop(\'liuyan\');
    }
}

 

ok,对比一下,再来看前面的命令,解释一下:php.exe解释器通过artisan这个工具创建migration(英译迁移)文件,其中类名CreateTableLiuyan对应create_table_liuyan(随便取的,你 开心就好,不过还是按照规则来),最后--create=liuyan是固定格式就是创建一个liuyan的表

我们要来修改这个迁移的文件

<?php

use Illuminate\\Database\\Schema\\Blueprint;
use Illuminate\\Database\\Migrations\\Migration;

class CreateTableLiuyan extends Migration
{
    /**
     * Run the migrations.
     *
     * @return void
     */
    public function up()
    {
        Schema::create(\'liuyan\', function (Blueprint $table) {
            $table->increments(\'id\');
            $table->char(\'username\',10);
            $table->char(\'password\',50);
            $table->tinyInteger(\'sex\');
            $table->char(\'title\',20);
            $table->string(\'content\',200);
            $table->tinyInteger(\'pubtime\');
            $table->tinyInteger(\'ip\');
        });
    }

    /**
     * Reverse the migrations.
     *
     * @return void
     */
    public function down()
    {
        Schema::drop(\'liuyan\');
    }
}

 

 

ok,在cmd.exe窗口执行命令:php artisan migrate

 

ok,创建迁移表成功,用另一个cmd窗口查看一下wmsgs下是否有这张表:

 

ok,有了liuyan这个表了,另外三个表是migration自动生成的表

同样,如果我们想增加其中一个表列该怎么办,比如我们想增加一个表列email,输入如下命令:

php artisan make:migration add_email_to_liuyan --table=liuyan

 

生成一个表列迁移文件,同样也是php文件:

 

打开这个文件:

<?php

use Illuminate\\Database\\Schema\\Blueprint;
use Illuminate\\Database\\Migrations\\Migration;

class AddEmailToLiuyan extends Migration
{
    /**
     * Run the migrations.
     *
     * @return void
     */
    public function up()
    {
        Schema::table(\'liuyan\', function (Blueprint $table) {
            //
        });
    }

    /**
     * Reverse the migrations.
     *
     * @return void
     */
    public function down()
    {
        Schema::table(\'liuyan\', function (Blueprint $table) {
            //
        });
    }
}

将这个生成的php迁移文件改为如下:

<?php

use Illuminate\\Database\\Schema\\Blueprint;
use Illuminate\\Database\\Migrations\\Migration;

class AddEmailToLiuyan extends Migration
{
    /**
     * Run the migrations.
     *
     * @return void
     */
    public function up()
    {
        Schema::table(\'liuyan\', function (Blueprint $table) {
            $table->string(\'email\');
        });
    }

    /**
     * Reverse the migrations.
     *
     * @return void
     */
    public function down()
    {
        Schema::table(\'liuyan\', function (Blueprint $table) {
            $table->dropCloumn(\'email\');
        });
    }
}

在cmd.exe窗口执行命令:

ok,增加表列成功,开另一个cmd窗口看一下:

email成功添加到liuyan表中!

恭喜你,到这里数据库迁移入门 了

 

当然有很多命令还需要去多敲多记,加油!

程序员装逼只用命令行 ,不用命令行out了,哈哈

以上是关于laravel数据库迁移的主要内容,如果未能解决你的问题,请参考以下文章

Laravel 5.2 迁移第二个表时出现数据库迁移错误

laravel_5《数据库迁移》

将非框架 PHP 项目移植到 Laravel 4.x

Laravel 迁移:“外键约束格式不正确”(errno 150)

laravel特殊功能代码片段集合

Laravel迁移在现有数据库表中添加列问题