为什么'php artisan migrate'命令会创建一个迁移表以及我打算创建的表?

时间:2015-01-14 13:09:23

标签: php laravel migration

应用程序/迁移/ create_user.php

public function up(){
  Schema::create('interns', function($intern){
     $intern->increments('id');
     $intern->string('name');
     $intern->integer('salary');
  });
}

因此上面的函数创建了一个名为" intern"的表。但同时它也创造了一个"迁移"表格上运行命令" php artisan migrate"。为什么要这样做?

2 个答案:

答案 0 :(得分:2)

Laravel的方法是跟踪已经进行的迁移。

我们假设你制作另一张桌子,但它不能正常工作,所以你需要运行php artisan migrate:rollback。 Laravel会知道第二个表是在第二个批处理中创建的,只回滚那个表,只留下你的实习表。

每次运行另一次迁移时,该表都将使用迁移的文件名及其运行的批处理进行更新。

答案 1 :(得分:2)

迁移表用于laravel跟踪数据库正在运行的版本。

对于每次迁移,它都会在迁移表中插入一个新行,这样当您运行migrate:rollback时,它会知道要撤消的迁移,同样,它知道将要运行的迁移。

如果您查看迁移表,您会看到它会记录迁移名称和批次编号。批次编号是运行迁移的顺序。例如,您可以创建用户表。你运行它,laravel记录文件名和批号。接下来,您可以添加与users表关联的帐户表。为此,您将创建2个新迁移,一个用于创建新帐户表,另一个用于编辑用户表以添加新列account_id。下次迁移时,将运行两个新迁移,但在相同的批次ID下分配。