果冻想
认真玩技术的地方

Laravel初级教程之php artisan数据库迁移

什么是php artisan?

Artisan是Laravel自带的命令行接口名称,它提供了很多有用的命令。想要查看所有可用的Artisan命令,可使用list命令查看:

php artisan list

每个命令都可以用help指令显示命令描述及命令参数和选项,例如查看数据库迁移命令的说明:

php artisan help migrate

总之,php artisan提供了一些对我们的应用开发有帮助的命令,能够提高我们的开发效率。对于学习Laravel,我们有必要去了解和学习一下php artisan的一些常用用法。下面的内容就结合我们日常开发中常用的一些开发内容进行说明。

利用artisan工具进行数据库迁移

首先,我们可以想象一下这样的一种场景。

日常我们自己开发时,一般我们可以通过phpmyadmin或者Navicat等数据库管理工具来创建、修改数据表结构。对于只有一个人的话还好,但是如果团队中有多个人,我们就需要导出表结构,然后传给团队中其他人,他们再把数据表结构导入他们的本地数据库,这时如果表中原来有数据的话就可能出现一些问题。而Laravel 5中的Migrations很好的避免了此问题。确保数据库版本的一致性。

Migrations把表结构存储为一个PHP类,通过调用其中的方法来创建、更改数据库。Migrations存放在 database/migrations目录中。每个文件中都包含了up()down()两个方法,一个用来创建、更改数据表,一个用来回滚操作,即撤销up()中的操作。

在php artisan中通过make:migration命令创建数据库迁移文件,先通过php artisan help make:migration命令查看一下使用说明:

Usage:
  make:migration [options] [--] <name>

Arguments:
  name                   The name of the migration.

Options:
      --create[=CREATE]  The table to be created.
      --table[=TABLE]    The table to migrate.
      --path[=PATH]      The location where the migration file should be created.
  -h, --help             Display this help message
  -q, --quiet            Do not output any message
  -V, --version          Display this application version
      --ansi             Force ANSI output
      --no-ansi          Disable ANSI output
  -n, --no-interaction   Do not ask any interactive question
      --env[=ENV]        The environment the command should run under
  -v|vv|vvv, --verbose   Increase the verbosity of messages: 1 for normal output, 2 for more verbose output and 3 for debug

Help:
  Create a new migration file

其中有以下两个命令需要特别说明一下:

  1. --create表示创建一个新表;
  2. --table表示修改指定表。

下面我通过一个具体的例子进行说明。
在项目根目录命令行下执行以下命令:

php artisan make:migration create_student_table --create=tb_student

在命令行中会输出以下内容:

Created Migration: 2018_01_28_135731_create_student_table

这个输出表示在database/migrations目录中生成对应的文件名称,这个文件名会包含时间戳记,在执行迁移时用来决定顺序。现在我们看一下自动生成的代码模板:

<?php

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

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

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

其中increments('id')表示一个自增列,而timestamps()则会增加名为created_at的两列,当然了,如果你愿意,你也可以删除它们。接下来我们的任务就是修改该文件,增加更多的列,比如像下面这样:

public function up()
{
    Schema::create('tb_student;', function (Blueprint $table) {
        $table->increments('id');
        $table->string('name');
        $table->string('sex');
        $table->integer('age');
        $table->timestamps();
    });
}

接下来再来看看修改表结构的写法,比如新增一列。
在项目的命令行下以下命令:

php artisan make:migration add_address_to_student_table --table=tb_student

在模板中进行以下开发即可:

public function up()
{
    Schema::table('tb_student;', function (Blueprint $table) {
        $table->string('address', 200);
    });
}

所有都准备好了,接下来就是进行数据库迁移了,你只需要执行以下命令就好了,Laravel给我们做好了一切:

php artisan migrate

你会看到这样的输出内容:

Migrating: 2018_01_28_135731_create_student_table
Migrated:  2018_01_28_135731_create_student_table
Migrating: 2018_01_28_145132_add_address_to_student_table
Migrated:  2018_01_28_145132_add_address_to_student_table

这个时候,你可以去看下数据库,tb_student表已经按照我们的要求建好了。当然了,如果你后悔了,你可以执行以下命令进行回退:

// 回滚上一次的迁移
php artisan migrate:rollback

// 回滚所有迁移
php artisan migrate:reset

// 回滚所有迁移并且再执行一次
php artisan migrate:refresh

当然了,对于数据库迁移,我这里只是总结了一些常用的,更多的内容可以参考这里

总结

对于Laravel中的Artisan,我一直都存在着好感,这种设计完全从提升开发效率,提升项目管理的角度去考虑,非常人性化的设计。也许就是这样的设计让大家都爱上Laravel了吧。确实,NB的框架,都有其NB的设计之处,让我们这些学习者在其中享受。好了,这篇文章总结到此,关于Artisan的使用远不止于此,后续还会继续总结,希望我的总结对大家入门Laravel有一定的帮助。如果你绝的还不错,可以支持一下果冻想。

果冻想——认真玩技术的地方。

2018年3月17日 于内蒙古呼和浩特。

未经允许不得转载:果冻想 » Laravel初级教程之php artisan数据库迁移
网站维护离不开您的支持,您可以赞助本站,谢谢支持
×

感谢您的支持,我们会一直保持!

扫码支持
请土豪扫码随意打赏

打开支付宝扫一扫,即可进行扫码打赏哦

分享从这里开始,精彩与您同在

赞助本站
关注微信公众号和果冻一起分享你的疑惑与心得。
关注微信公众号
分享到: 更多 (0)

评论 抢沙发

评论前必须登录!

 

玩技术,我们是认真的

联系我们关于果冻