Laravel迁移如何运作?

时间:2015-05-13 16:23:20

标签: php laravel laravel-5 laravel-migrations

我对这种类型的框架完全陌生。我来自准系统PHP开发,我似乎无法找到一个易于理解的指南迁移实际上做什么。

我正在尝试创建一个已有现有数据库的项目。我已经使用了这个:https://github.com/Xethron/migrations-generator[1]但是通过迁移对模式进行更改似乎吐出了错误,这意味着我不知道我在做什么。

我真的需要简单了解迁移实际执行的操作,它们如何影响数据库以及您认为有助于绝对初学者的任何其他内容。

3 个答案:

答案 0 :(得分:14)

迁移是一种数据库版本控制。它们允许团队修改数据库模式并在当前模式状态下保持最新。迁移通常与Schema Builder配对,以便轻松管理应用程序的架构。

通过迁移,您无需在phpMyAdmin中创建表,您可以在Laravel中执行此操作。以下是创建用户表的示例:

class CreateUsersTable extends Migration {

    /**
     * Run the migrations.
     *
     * @return void
     */
    public function up()
    {
        Schema::create('users', function(Blueprint $table)
        {
            $table->increments('id'); // autoincrement id field
            $table->string('name');   // string field
            $table->string('lastname');
            $table->string('title');
            $table->string('email')->unique();   // unique string field
            $table->string('password', 60);      // string field with max 60 characters
            $table->boolean('Status')->default(0); // string field with default value 0
            $table->timestamps();

        });
    }


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

}

我这个代码我们用“name”,“lastname”这样的字段创建表格...我们在Laravel代码中说他们在迁移完成时是字符串类型我们在databese中有这个字段的完整表格。

运行迁移以创建表格

要创建迁移,您可以在 Artisan CLI (artisan命令行界面)上使用make:migration命令:

php artisan make:migration create_users_table

php artisan make:migration create_users_table --create=users

运行迁移到alter table

当您需要在数据库表示例中进行一些更改时:将字段投票添加到用户表,您可以在Laravel代码中执行此操作,而无需触及SQL代码

php artisan make:migration add_votes_to_users_table --table=users

回滚上次迁移操作

如果您犯了错误并做错了什么,您可以随时回滚以返回之前状态的数据库。

php artisan migrate:rollback

回滚所有迁移

php artisan migrate:reset

回滚所有迁移并重新运行

php artisan migrate:refresh

php artisan migrate:refresh --seed

迁移的最大好处之一是在不触及SQL代码的情况下创建数据库。您可以使用PHP代码中的关系创建整个数据库,然后将其迁移到MySQL,PL / SQL,MSSQL或任何其他数据库。

另外,我推荐免费Laravel 5 fundamental series,在第7集中,您可以听到有关迁移的更多信息。

答案 1 :(得分:2)

迁移的简单说明:

它们是数据库方案的版本控制系统。

想象一下,您正在设置一个新的应用程序。你要做的第一件事就是用几列创建一个表(称之为mytable)。这将是您的第一次迁移。当您开始处理应用程序和 voila 时,您将运行迁移(php artisan migrate)!您的数据库中有一个新表。

一段时间后,您决定在表格中需要一个新列。您在Laravel 5中创建了一个迁移(php artisan make:migration),并为您创建了一个新的迁移文件。您更新该迁移中的代码,再次运行php artisan migrate,表格中有一个新列。

好的,这是迁移背后的基本思想。但还有更多......

假设,稍后您意识到在创建上次迁移时搞砸了。您已经运行它,因此您的数据库已更改。你怎么解决它?好吧,如果您正确编写了迁移并实现了down方法,那么您可以执行php artisan migrate:rollback并回滚迁移。

Laravel如何做到这一点?通过在特殊数据库表中跟踪迁移。 php artisan migrate:install命令将为您设置,以便Laravel可以管理这些迁移。

随着时间的推移,随着应用程序的增长,您将添加越来越多的迁移。 Laravel为您提供了一种方法,可以根据需要前进和后退您的迁移,以确保您的数据库处于您工作时所需的任何状态。

使用artisan查看php artisan命令列表。您还可以使用php artisan help <command>请求有关特定命令的帮助。

答案 2 :(得分:2)

想象一下,您正在与其他开发人员合作开展项目。随着开发人员添加越来越多的功能,他们还需要添加越来越多的表,列,删除列,更改列数据类型等...

这可以非常快速,轻松地失控。如果您错过了一个开发人员的SQL,那么另一个开发人员的SQL可能无法正常工作。它也可能成为一个巨大的浪费时间试图排序一堆sql文件试图找出你错过了哪些。开发团队中的每个人都在使用不同的数据库或上帝禁止,只是时间问题,有人打破了生产数据库。通过迁移,您只需在命令行中运行php artisan migrate,即可为您处理对数据库的所有更改。

这基本上是为什么迁移很有用我不打算深入了解它们的工作方式,因为Kryten已经在这里写了很好的文章。