【问题标题】:Why does 'php artisan migrate' command create a migration table along with the table i intended to create?为什么“php artisan migrate”命令会创建一个迁移表以及我打算创建的表?
【发布时间】:2015-01-15 01:47:52
【问题描述】:

app/migrations/create_user.php

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

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

【问题讨论】:

    标签: php laravel migration


    【解决方案1】:

    这是 Laravel 跟踪已运行的迁移的方式。

    假设您创建了另一个表,但它无法正常工作,因此您需要运行 php artisan migrate:rollback。 Laravel 将知道第二个表是在第二批中创建的,并且只会回滚那个表,而不会留下您的实习生表。

    每次您运行另一个迁移时,该表都将使用迁移的文件名和运行它的批次进行更新。

    【讨论】:

      【解决方案2】:

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

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

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

      【讨论】:

      • 感谢回复:)
      猜你喜欢
      • 2020-10-16
      • 2014-02-16
      • 2017-09-27
      • 1970-01-01
      • 2021-06-15
      • 2021-03-29
      • 1970-01-01
      • 2015-03-28
      • 1970-01-01
      相关资源
      最近更新 更多