Laravel 5.4特定表迁移

时间:2017-08-03 02:02:06

标签: laravel migration laravel-5.4

您可以在https://laravel.com/docs/5.4/migrations中阅读所有包含的文档。

有没有办法如何迁移某个迁移文件(仅限1个迁移),因为每次发生更改时我都会使用php artisan migrate:refresh并且所有字段都会重置。

25 个答案:

答案 0 :(得分:46)

首先,你应该为你的表创建一个migration文件,如:

public function up()
    {
        Schema::create('test', function (Blueprint $table) {
            $table->increments('id');
            $table->string('fname',255);
            $table->string('lname',255);
            $table->rememberToken();
            $table->timestamps();
        });
    }

迁移文件夹中创建测试文件夹后,在测试文件夹中移动/复制新创建的迁移并运行终端/ cmd 中的下方命令,如:

php artisan migrate --path=/database/migrations/test/

答案 1 :(得分:40)

只需查看数据库中的migrations表,就会有一个迁移文件名和批号值列表。

假设您有以下结构,

id     migration                                           batch

1      2014_10_12_000000_create_users_table                  1 
2      2014_10_12_100000_create_password_resets_table        1
3      2016_09_07_103432_create_tabel_roles                  1

如果您想要回滚2016_09_07_103432_create_tabel_roles迁移, 将它的迁移批处理值更改为2,这是最高的,然后执行以下操作。

php artisan migrate:rollback

此处仅回滚具有批次值2的表。现在,对该表进行更改并运行以下控制台命令。

php artisan migrate

migrations表中的批处理值定义了迁移的顺序。回滚时,最新或具有最高批次值的迁移将首先回滚,然后回滚。因此,您可以更改数据库中的值,然后回滚特定的迁移文件。

虽然由于表结构之间的关系,每次更改批次编号不是一个好主意,但我们可以将这种情况用于单表回滚不会违反表之间完整性的某些情况

希望你明白。

答案 2 :(得分:9)

您应将路径添加到迁移文件中,以刷新此表并运行

php artisan migrate:refresh --path=/database/migrations/fileName.php

答案 3 :(得分:9)

您可以运行这样的命令

php artisan migrate --path=/database/migrations/2020_04_10_130703_create_test_table.php

答案 4 :(得分:5)

php artisan migrate --path=database/migrations/2020_04_10_130703_create_test_table.php

注意

<块引用>

after --path no / before

答案 5 :(得分:5)

只想发布另一个解决方案,我认为值得一提。

  1. 在迁移表中找到带有您的迁移名称的行并将其删除。 它应该看起来像这样:2016_06_01_000001_create_oauth_auth_codes_table
  2. 从数据库中删除表,例如删除表oauth_auth_codes
  3. 运行php artisan migration

它将仅迁移您需要的表,而不会涉及其他任何内容

答案 6 :(得分:4)

如果要创建一个特定表。您可以使用此代码。它适用于laravel(5.x)版本。

php artisan migrate:refresh --path=/database/migrations/fileName.php

答案 7 :(得分:3)

您只能回滚:

php artisan migrate:rollback

https://laravel.com/docs/5.4/migrations#rolling-back-migrations

您可以使用&#39;步骤&#39;指定要回滚的迁移次数。选项:

php artisan migrate:rollback --step=1

这里有一些技巧:

Rollback one specific migration in Laravel

答案 8 :(得分:3)

删除该表并从迁移表中删除其记录。

之后,您只需再次运行迁移:

php artisan migrate

答案 9 :(得分:3)

php artisan help migrate

您将看到以下选项:

  

-path [= PATH]要执行的迁移文件的路径

顺便说一句,您可能可以指出要迁移的文件的根文件夹:

php artisan migrate --path=/database/migrations/sample.php

或者,您可以在迁移中创建一个新文件夹,然后迁移其中想要的所有迁移文件:

php artisan migrate --path=/database/migrations/new_folder

答案 10 :(得分:3)

您需要将文件放入新目录(例如:selected),然后应用

php artisan migrate  --path=/database/migrations/selected

如果需要回滚:

php artisan migrate:rollback  --path=/database/migrations/selected

注意:

php artisan migrate:refresh

这将回滚然后迁移默认目录(/ database / migrations)中的所有迁移文件

答案 11 :(得分:2)

或者您可以简单地从数据库中的“ migrations”表中删除迁移文件名,然后运行: php artitsan migration

答案 12 :(得分:1)

更正-在数据库之前删除斜杠

$ php artisan migrate --path=database/migrations/migration.php

答案 13 :(得分:1)

php artisan migrate --path=/database/migrations/fileName.php

您不必为迁移而刷新,因为刷新意味着:回滚 所有迁移并再次运行它们

答案 14 :(得分:1)

您只能在终端中运行此命令

php artisan migrate --path=database/migrations/2020_10_01_164611_create_asset_info_table.php

迁移后,您应该放置特定的文件名。或者如果您在迁移中有任何文件夹,则只需在迁移后添加该文件夹名称即可。

php artisan migrate --path=database/migrations/yourfolder/2020_10_01_164611_create_asset_info_table.php

我希望这对您有所帮助。编码愉快。

答案 15 :(得分:1)

php artisan migration --path = / database / migrations / fileName.php

只需按照指令执行此命令文件名,此处应为您的迁移表名 例: php artisan migration --path = / database / migrations / 2020_02_21_101937_create_jobs_table.php

答案 16 :(得分:1)

安装此软件包

https://github.com/nilpahar/custom-migration/

并运行此命令。

php artisan migrate:custom -f migration_name

答案 17 :(得分:1)

如果要创建另一个表,只需创建一个新的迁移文件。它会起作用。

如果使用users_table创建名为id, first_name, last_name的迁移。您可以创建类似

的迁移文件
    public function up()
    {
        Schema::create('users', function (Blueprint $table) {
            $table->increments('id');
            $table->string('first_name',255);
            $table->string('last_name',255);
            $table->rememberToken();
            $table->timestamps();
        });
    }
    public function down()
    {
        Schema::dropIfExists('users');
    }

如果你想在没有迁移的情况下添加另一个像“status”这样的字段:刷新。您可以创建另一个迁移文件,例如“add_status_filed_to_users_table”

public function up()
{
    Schema::table('users', function($table) {
        $table->integer('status');
    });
} 

不要忘记添加回滚选项:

public function down()
{
    Schema::table('users', function($table) {
        $table->dropColumn('status');
    });
}

当您使用php artitsan migration运行迁移时,它只迁移新的迁移文件。

但是如果您将“status”字段添加到第一个mgration文件(users_table)并运行迁移。迁移没什么。您需要运行php artisan migrate:refresh

希望得到这个帮助。

答案 18 :(得分:1)

您可以尝试使用--path =选项来定义您想要执行的特定子文件夹,并在其中放置特定的迁移。

或者,您需要从DB和迁移表中删除不理想的引用和表:/

答案 19 :(得分:0)

如果您使用标签进行自动填充

php artisan migrate --path='./database/migrations/2019_12_31_115457_create_coworking_personal_memberships_table.php'

答案 20 :(得分:0)

特定表迁移

php artisan migrate --path=/database/migrations/fileName.php

答案 21 :(得分:0)

简单的方法是在PHP MyAdmin或Mongodb上删除表,然后运行php artisan migrate

答案 22 :(得分:0)

答案 23 :(得分:0)

您也可以再次迁移已迁移的表,但首先您需要进入数据库迁移表并删除特定迁移名称的行。 然后点击 php artisan migrate

答案 24 :(得分:-1)

首先,您应该执行以下命令:

第1步:

php artisan migrate:rollback

第2步:

php artisan migrate

您的表将返回数据库。