Laravel迁移如何运作?

Rec*_*cur 10 php laravel laravel-5 laravel-migrations

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

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

我真的需要简单了解一下迁移实际上做了什么,它们如何影响数据库以及你认为有助于绝对初学者的任何其他事情.

Adn*_*nan 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');
    }

}
Run Code Online (Sandbox Code Playgroud)

我这个代码我们用"name","lastname"这样的字段创建表...我们在Laravel代码中说他们在迁移完成时是字符串类型我们在数据库中有这个字段的完整表.

运行迁移以创建表

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

php artisan make:migration create_users_table
Run Code Online (Sandbox Code Playgroud)

要么

php artisan make:migration create_users_table --create=users
Run Code Online (Sandbox Code Playgroud)

运行迁移到alter table

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

php artisan make:migration add_votes_to_users_table --table=users
Run Code Online (Sandbox Code Playgroud)

回滚上次迁移操作

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

php artisan migrate:rollback
Run Code Online (Sandbox Code Playgroud)

回滚所有迁移

php artisan migrate:reset
Run Code Online (Sandbox Code Playgroud)

回滚所有迁移并再次运行它们

php artisan migrate:refresh

php artisan migrate:refresh --seed
Run Code Online (Sandbox Code Playgroud)

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

此外,我推荐免费的Laravel 5基础系列,在第7集中,您可以听到更多有关迁移的信息.

  • 这个答案看起来刚刚从文档中复制而来,恕我直言,这不是很好。除了在数据库/迁移中创建文件之外,make:migration实际上还做了什么?为什么当数据库/迁移中有文件时,命令 migrate:status 会响应“未找到迁移?” 在什么时候创建迁移?如何运行它们以应用它们包含的更改?有没有办法为我的数据库中的所有表创建起点迁移?laravel 文档和帮助命令也没有解释这一点:https://laravel.com/docs/5.4/migrations (2认同)