Laravel 5.4特定表迁移

Mar*_*cha 50 migration laravel laravel-5.4

您好,请阅读https://laravel.com/docs/5.4/migrations中包含的所有文档.

有没有办法如何迁移某个迁移文件(仅限1个迁移),现在每次我使用的更改都会导致php artisan migrate:refresh所有字段都重置.

Add*_*Ltd 80

首先,您应该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();
        });
    }
Run Code Online (Sandbox Code Playgroud)

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

php artisan migrate --path=/database/migrations/test/
Run Code Online (Sandbox Code Playgroud)

  • php artisan migrate --path = database/migrations/test /为我工作 (2认同)

Sag*_*tam 46

只需查看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
Run Code Online (Sandbox Code Playgroud)

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

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

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

php artisan migrate
Run Code Online (Sandbox Code Playgroud)

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

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

希望你能理解.


Wis*_*SSI 27

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

php artisan migrate:refresh --path=/database/migrations/fileName.php
Run Code Online (Sandbox Code Playgroud)

  • 有时它会是database/migrations/fileName.php,没有第一个反斜杠 (2认同)
  • 值得一提的是,刷新后所有数据都会消失。如果您希望保留数据,您应该将数据保存在数据库中作为导出并在刷新后导入。 (2认同)

小智 16

如果您使用选项卡进行自动完成

php artisan migrate --path='./database/migrations/2019_12_31_115457_create_coworking_personal_memberships_table.php'
Run Code Online (Sandbox Code Playgroud)


Tuh*_*hin 15

对于特定文件运行以下命令:

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

--file= 是您的文件的位置,migrate:refresh并将清空您的表数据

如果你想从数据库中清空所有表的数据,然后运行

php artisan migrate:refresh命令。


Say*_*dar 14

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

php artisan migrate --path=database/migrations/2020_10_01_164611_create_asset_info_table.php
Run Code Online (Sandbox Code Playgroud)

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

像这样

php artisan migrate --path=database/migrations/yourfolder/2020_10_01_164611_create_asset_info_table.php
Run Code Online (Sandbox Code Playgroud)


小智 11

你可以像这样运行命令

php artisan migrate --path=/database/migrations/2020_04_10_130703_create_test_table.php
Run Code Online (Sandbox Code Playgroud)


小智 9

只需使用 --path 标志即可。您不需要使用回滚、刷新或任何其他命令。例子:

php artisan migrate --path=/database/migrations/migration_file_name.php
Run Code Online (Sandbox Code Playgroud)


Dan*_*aku 8

获取迁移的实际文件名和路径并运行如下命令

php artisan migrate --path=/database/migrations/2021_10_03_071450_create_reset_codes_table.php
Run Code Online (Sandbox Code Playgroud)


man*_*yen 7

php artisan help migrate
Run Code Online (Sandbox Code Playgroud)

您将看到以下选项:

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

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

php artisan migrate --path=/database/migrations/sample.php
Run Code Online (Sandbox Code Playgroud)

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

php artisan migrate --path=/database/migrations/new_folder
Run Code Online (Sandbox Code Playgroud)


小智 7

php artisan migrate --path=database/migrations/2020_04_10_130703_create_test_table.php
Run Code Online (Sandbox Code Playgroud)

注意

之后 --path 没有 / 之前


Ser*_*eis 7

php artisan migrate --path=/database/migrations/fileName.php
Run Code Online (Sandbox Code Playgroud)

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


小智 6

更正-删除数据库前的斜杠

$ php artisan migrate --path=database/migrations/migration.php
Run Code Online (Sandbox Code Playgroud)


Vis*_*iya 6

特定表迁移

php artisan migrate --path=/database/migrations/fileName.php
Run Code Online (Sandbox Code Playgroud)


Ahm*_*abi 5

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

php artisan migrate  --path=/database/migrations/selected
Run Code Online (Sandbox Code Playgroud)

如果需要回滚:

php artisan migrate:rollback  --path=/database/migrations/selected
Run Code Online (Sandbox Code Playgroud)

注意:

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

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


tyl*_*lik 5

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

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

它只会迁移您需要的表,而不会涉及其他任何东西